C# 中的静态变量初始化
在 C# 中使用静态变量时,了解其初始化的时间至关重要。
静态变量的时序初始化
静态变量在以下情况下初始化:
-
存在静态构造函数:如果类有静态构造函数 (static MyStaticConstructor()),静态变量在第一次调用静态构造函数时初始化。
-
否静态构造函数: 如果没有静态构造函数,静态变量会在类型加载到内存时初始化。
类型加载触发器
Class加载由以下条件触发:
- 创建class
- 访问类的静态成员
- 使用反射显式加载的类
其他注意事项
- 在 .NET 4 中,静态变量初始化变得更加“惰性”,这意味着它们仅在首次初始化时才进行初始化访问。
- 如果设置了 beforefieldinit 标志,则静态变量将在调用任何实例构造函数之前初始化。此标志是通过静态构造函数的存在来设置的。
- 为了确保行为一致,建议避免依赖特定的初始化计时,而只需通过常规代码访问来初始化静态变量。
有关更多详细信息和全面的解释,请参阅原始回复中链接的 Jon Skeet 的文章。
以上是C#中静态变量什么时候初始化?的详细内容。更多信息请关注PHP中文网其他相关文章!