在静态构造函数中初始化静态变量而不是直接赋值

时间:2017-01-16 07:23:00

标签: c# .net oop c#-4.0 constructor

在下面提到的代码中,有两种方法可以分配静态变量'RateOfInterest'的值。

  1. 直接指定值。
  2. 通过分配静态构造函数。
  3. 我相信'Customer'类的多个对象,'RateOfInterest'将只使用任一种方法分配一个内存。 (如果我错了,请纠正我。)

    一种方法与另一种方法相比是否具有任何特定优势。

    class Customer
    {
        int AccNo;
        static int RateOfInterest;
        //static int RateOfInterest = 10;    // Approach 1
        static Customer()
        {
            RateOfInterest = 10;          // Approach 2
        }
        public Customer(int AccNo)
        {
            this.AccNo = AccNo;
        }
        public void Display()
        {
            Console.WriteLine($"AccNo : {AccNo}, Rate : {RateOfInterest}");
        }
    }
    

2 个答案:

答案 0 :(得分:2)

他们将编译成同样的东西。所以没有区别,

那不是私人构造函数。这是static constructor

  

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

当使用静态构造函数时,直接赋值,行变得太长(基于观点)或者当我需要多行来初始化值时。

答案 1 :(得分:1)

实际上,这两种方法没有区别。

如果要分配文字值,例如int plusIntPointer(int *x){ return ++*x; } ,则在声明处直接分配它会更快。

但是如果你的变量的初始化更复杂,就像这样:

10

你应该把它放在静态构造函数中。