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



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

  1. 通过直接分配值。
  2. 通过在静态构造函数中赋值。

我相信对于"客户"类的多个对象,"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}");
    }
}
它们

将被编译成同一件事。 所以没有区别,

这不是私有构造函数。 那是静态构造函数

静态

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

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

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

如果要分配文本值,例如 10 ,则直接在声明中分配它会更快。

但是,如果变量的初始化更复杂,如下所示:

val = new MyClass();
val.A = 1;
val.B = "Hi";
val.SomeMethod();
val.AnotherMethod();

您应该将其放在静态构造函数中。

最新更新