6

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

4

3 回答 3

11

第一次引用您的类时调用静态构造函数,即

MyClass.SomeStaticMethod()

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

当您要确保在访问某个静态状态之前对其进行初始化时,使用语义优先,另一个用于初始化实例成员。

于 2010-09-30T20:49:20.517 回答
5

静态构造函数允许你在一个类中初始化静态变量,或者在你的代码中第一次引用它之后做其他需要在类中做的事情。每次您的程序运行时,它们只会被调用一次。

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

static MyClass()
{
}

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

您可以使用这些为新对象提供初始状态。这些可以重载,并且可以带参数:

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

public MyClass(int someNumber, int someOtherNumber)
{
    this.someNumber = someNumber;
    this.someOtherNumber = someOtherNumber;
}

调用代码:

MyClass myObject = new MyClass(100, 5);
于 2010-09-30T20:50:12.183 回答
2

对于类的所有实例或使用,静态构造函数只运行一次。它将在您第一次使用该类时运行。当您实例化类的对象时,正常的构造函数会运行。

您需要了解的有关静态构造函数的所有信息都可以在这里找到:https ://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/static-constructors

于 2010-09-30T20:49:50.413 回答