没分呀!
静态构造函数就是给类中哪些静态字段赋值的函数---将就着这么理解吧。它总是早于实例构造函数运行。
public class class1
{
static class1(){} //仅在第一次实例化时执行(如果多线程同时访问,会确保只执行一次),并且只能是私有的(C#会自动标记为private,不允许手动标注修饰符)。
public class1(){} //每次实例化都会执行
}
public class class2
{
void main()
{
class1 a = new class1(); //1,执行静态构造函数,2执行实例构造函数
class1 b = new class1();//执行实例构造函数
class1 c = new class1();//执行实例构造函数
......
}
}
我来补充个比较全面的吧!
1、静态构造函数不能带任何参数,一个类只能有一个静态构造函数。 构造函数参数数目不定,可以根据需求设定,一个类可以有多个构造函数(重载)。
2、静态构造函数的执行具有不定性,你只能确保静态构造函数在第一次调用类的成员之前执行,并且静态构造函数至多执行一次。构造函数:只要创建类的实例,都会执行,具有时间的可把握性。
3、静态构造函数没有修饰符。
注意:无参数的实例构造函数可以在类中与静态构造函数安全共存。尽管参数列表是相同的,但这并不茅盾,因为静态构造函数是在加载类时执行的,而实例构造函数是在创建实例时执行,所以构造函数的执行的不会有冲突的。