C#中,静态的构造函数跟非静态的有什么区别?

请举例说明一下:谢谢了.
2024-11-15 23:48:05
推荐回答(5个)
回答1:

静态构造函数是最早被调用的,只要有静态访问,那么就先调用静态构造函数。其他非静态构造函数会在调用完毕静态的成员之后才被调用。

所以一般静态构造函数用来为静态成员初始化,或者作为单件模式中创建对象的唯一入口。

例如:

private static GoodsManager s_Instance;

public static GoodsManager Instance
{
get{return s_Instance;}
}
static GoodsManager()
{
s_Instance = new GoodsManager();
}
private GoodsManager()
{ }

在访问类的静态成员的时候,系统会最先调用静态构造函数static GoodsManager(),在构造函数中初始化了静态变量。

回答2:

静态的不需要被实例化,非静态的需要被实例化

静态的:classA.classA(); //直接被调用了

非静态的:
classA a = new classA(); //实例化的时候被调用了

回答3:

静态方法与变量都是全局的,假如你定义静态变量 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。

回答4:

小例子
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();
也就是说 他们执行的条件不一样
接分

回答5:

msdn 里 自己查, 那里解释的狠详细