【发布时间】:2011-08-22 10:27:22
【问题描述】:
今天我和我的同事讨论并总结了以下几点。如果一切正确或需要进行一些修改,请提供一些说明。
- 当类中未定义静态构造函数时,静态字段会在使用前进行初始化。
- 在类中定义静态构造函数时,静态字段会在它们使用之前或作为实例创建(之前)的一部分进行初始化。
- 如果在静态方法中没有访问静态字段并且调用该静态方法。只有在该类中定义了静态构造函数时,才会初始化静态字段。
- 如果可能,应在类中避免使用静态构造函数。
【问题讨论】:
-
“静态变量”是什么意思,属性?领域?您不能将方法中的变量声明为静态变量。
-
是的,在 C# 中,静态变量不在方法中声明。静态变量是指字段。我已经更新了问题。
-
#4 - 不,不要避免使用静态构造函数。它是初始化类型的一次性成本。与往常一样,在避免使用任何功能之前,请以您方便的方式使用它。然后测试看看这是否对性能有任何负面影响。 [它不会,除非你在构造函数中做一些昂贵的事情,在这种情况下,它是你的代码,而不是构造的事实。]
-
#1-#3 几乎肯定是错误的。 AFAIK,一个 absent 静态构造函数等同于一个 empty 静态构造函数。其他任何事情都会变得混乱。最接近准确的是#2,但是没有 "当定义静态构造函数时",并且有
first(实例创建)。
标签: c# static initialization