【发布时间】:2014-04-30 15:07:28
【问题描述】:
当我的班级中有 static 字段时:
public static int Counter = 0;
使用static 构造函数:
static Class() {
Counter++;
}
当我创建此类的对象并检查 Class.Counter 时,它显示 1 是正确的。
但是当我创建同一个类的另一个对象时,Class.Counter 仍然是1。
为什么会这样?
【问题讨论】:
-
MSDN 应该是你的首选,而不是 stackoverflow。
-
如果您走这条路,请确保您考虑多线程。从长远来看,有几个线程安全的替代方案可以为您解决问题
-
来自msdn.microsoft.com/en-us/library/k9x6w0hc.aspx - 在创建第一个实例或引用任何静态成员之前,会自动调用静态构造函数来初始化类。
-
顺便说一句,如果您打算拥有一个全局实例计数器(为什么,顺便说一句?),您应该使用
Interlocked.Increment。 -
我给你的最极致的掌纹。
标签: c# static static-members