我想在C#中创建一个小的静态类。
这个类只需要一个列表和一个bool。
在任何方法之外初始化列表和设置我的bool(false)的默认值之间有什么区别,例如:
class MyClass
{
static bool A = true;
static List<int> B = new List<int>();
}
并在方法中初始化它们,如:
class MyClass
{
static bool A;
static List<int> B;
public static void Initialize()
{
A = true;
B = new List<int>();
}
}
答案 0 :(得分:8)
在第一种方法中,将在静态类的第一个引用上为字段分配值。
在您的第二种方法中,在您调用方法Initialize
之前,不会为字段分配您的值。将为他们分配默认值。
如果您的类具有静态构造函数,则情况会有所不同:
class MyClass
{
public static bool A;
public static List<int> B;
static MyClass()
{
A = true;
B = new List<int>();
}
}
如果要初始化public
字段,则可以使用static constructor,当引用任何静态成员时,将自动调用它。 (请注意,在这种情况下,您的字段将为public
)
静态构造函数用于初始化任何静态数据,或者 执行仅需要执行一次的特定操作。它 在创建第一个实例或任何实例之前自动调用 静态成员被引用。