两者有什么区别?我只使用了一种构造函数,我相信它是静态构造函数。只熟悉C ++和Java。
答案 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