C# Self Initiated class - 如何在项目中使用

C# Self Initated class - how to use in project

我创建了一个 class 并在文件中对其进行了自我初始化 - 这是使用它的最佳方式吗?我有另一个可以使用的常量 class 但由于某些原因我无法在我的项目中使用它,它们是否需要是常量?

文件:test.cs

using System;
using System.Collections.Generic;
using System.Text;

namespace DH.Models
{
    public class test
{
        public string testSourceCollection { get; set; }
        public string testSourceKey { get; set; }
        public string testSourceDatabase { get; set; }
        public string testSourceCluster { get; set; }
        public string testSourceTimestamp { get; set; }

        public test[] testDetails = {
                    new test{
                        testSourceCollection = "SourceCollection",
                        testSourceDatabase = "SourceDatabase ",
                        testSourceKey = "SourceKey ",
                        testSourceTimestamp = "SourceTimestamp "
                    },
                    new ProviderRecon
                    {
                        testSourceCollection = "testSourceCollection2",
                        testSourceDatabase = "testSourceDatabase2",
                        testSourceKey = "testSourceKey2",
                        testSourceTimestamp = "testSourceTimestam2",
                        testSourceCluster = "testSourceCluster2"
                    }
                    };
        }
    
}



我想在我的 Worker.cs 文件中使用

public class Worker : BackgroundService
        {
           var test = test.testDetails;
           Console.WriteLine("2nd test: " + test.testSourceCluster )
           //Prints "2nd test: testSourceCluster2"
        }


您可能希望 testDetails 是静态的。您无法使用类型访问 (non-static) 个成员。将 public test[] testDetails = ... 更改为 public static test[] testDetails =...

但是,您那里有很多 non-standard 命名,这使得这段代码难以阅读。 class test 应该改为 Test。否则 var test = test.testDetails; 行很难阅读(并且可能无法编译)。您的 Worker class 也是如此。那段代码无法编译。

每次创建 class 的实例时,testDetails 属性 都会使用新数组进行初始化。如果为每个实例创建 1000 个实例,则使用新数组初始化 testDetails。

您可以使用静态 field/property 来避免使用同一个数组创建多个实例。 static keyword

或者使用 static readonly property/field 来避免使用同一个数组创建多个实例。 static readonly properties/fields 可以用静态构造函数初始化。 Static constructors