在构造函数外部初始化变量

时间:2014-03-10 15:27:24

标签: c#

我想在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>();
    }
}

1 个答案:

答案 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

请参阅:Static Constructor - MSDN

  

静态构造函数用于初始化任何静态数据,或者   执行仅需要执行一次的特定操作。它   在创建第一个实例或任何实例之前自动调用   静态成员被引用。