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
我创建了一个 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