首次访问静态成员时会执行静态构造函数。知道了这一点,我有几个问题:
- 这是否意味着每次访问静态方法时,运行时都必须检查是否调用了静态构造函数?
- 这会影响性能吗?
- “无构造函数”静态类是否避免了这种性能损失?
[编辑]:我想澄清一下,我不关心微优化。
我问这个问题是因为这是一个设计决定。如果静态构造函数导致性能下降,那么我将在设计代码时考虑到这一点,并且会更加了解可能影响性能的决策。
这是一个例子来说明我的问题。Independent
采用该方法并将其放在单独的静态类中会有什么好处吗?这样,它就不必检查 staticTest
是否已初始化。[更新请参阅下面的答案以获得更好,更简单的示例]。
static class Test {
// Static constructor with dependent method:
static int x;
static Test() { x = 5; }
static int Dependent() { return x; }
// Static, independent method:
static int Independent(int y) { return y+1; }
}
静态构造函数的执行由在应用程序域中发生的以下第一个事件触发:
- 类的一个实例被创建。
- 类的任何静态成员都被引用。