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

时间:2010-09-30 20:46:58

标签: c# constructor static-constructor

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

3 个答案:

答案 0 :(得分:11)

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

MyClass.SomeStaticMethod()

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

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

答案 1 :(得分: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);

答案 2 :(得分:1)

静态构造函数仅针对所有实例或类的使用运行一次。它将在您第一次使用该类时运行。正例构造函数在您实例化类的对象时运行。

您可以在此处找到有关静态构造函数的所有信息:http://msdn.microsoft.com/en-us/library/k9x6w0hc(v=VS.100).aspx