静态构造函数是最早被调用的,只要有静态访问,那么就先调用静态构造函数。其他非静态构造函数会在调用完毕静态的成员之后才被调用。
所以一般静态构造函数用来为静态成员初始化,或者作为单件模式中创建对象的唯一入口。
例如:
private static GoodsManager s_Instance;
public static GoodsManager Instance
{
get{return s_Instance;}
}
static GoodsManager()
{
s_Instance = new GoodsManager();
}
private GoodsManager()
{ }
在访问类的静态成员的时候,系统会最先调用静态构造函数static GoodsManager(),在构造函数中初始化了静态变量。
静态的不需要被实例化,非静态的需要被实例化
静态的:classA.classA(); //直接被调用了
非静态的:
classA a = new classA(); //实例化的时候被调用了
静态方法与变量都是全局的,假如你定义静态变量 int i = 10; 那么你的程序就只有这一个i变量:
class
{ static int i = 10; }
class.i = 100;
而非静态的就是面向对象型的,假如你定义非静态变量 int i = 10; 你必须通过创建对象创建i变量:
class
{ int i = 10; }
class object1st = new class();
object1st.i = 100;
通过创建不同的object你就能得到很多的i。
小例子
class a
{
a()
{Console.write("我是a的构造函数");}
}
class b
{
static int bbb;
static b()
{Console.write("我是static b 的构造函数")}
}
A a=new A()
执行完这句 程序会自动执行 a();
b.bbb=5;
执行完这句 程序会自动执行 b();
也就是说 他们执行的条件不一样
接分
msdn 里 自己查, 那里解释的狠详细