C#实例构造函数与静态构造函数

RoR*_*RoR 6 c# constructor static-constructor

两者有什么不同?我只使用了一种构造函数,我相信它是静态构造函数.只熟悉C++和Java.

Muh*_*han 11

静态构造函数是在第一次引用类时调用的

MyClass.SomeStaticMethod()
Run Code Online (Sandbox Code Playgroud)

每次执行时都会调用实例构造函数,MyClass dummy = new MyClass()即创建类的实例

当您希望确保在访问某些静态之前初始化某个静态以及另一个用于初始化实例成员时,将使用语义优先.


Bol*_*ock 5

静态构造函数允许您初始化类中的静态变量,或者在代码中首次引用类之后执行其他需要执行的操作.每次程序运行时,它们只被调用一次.

静态构造函数使用此语法声明,并且不能重载或具有任何参数,因为它们在类的名称引用时运行:

static MyClass()
{
}
Run Code Online (Sandbox Code Playgroud)

实例构造函数是在创建新对象(类的实例)时调用的构造函数.它们也是您通常在Java和大多数其他面向对象语言中使用的那些.

您可以使用它们为新对象提供初始状态.这些可以重载,并可以采取参数:

public MyClass(int someNumber) : this(someNumber, 0) {}

public MyClass(int someNumber, int someOtherNumber)
{
    this.someNumber = someNumber;
    this.someOtherNumber = someOtherNumber;
}
Run Code Online (Sandbox Code Playgroud)

来电代码:

MyClass myObject = new MyClass(100, 5);
Run Code Online (Sandbox Code Playgroud)