静态变量初始化
今天我与同事讨论并得出以下几点。 如果一切正确或需要进行一些修改,请点亮一些光。
- 如果未在类中定义静态构造函数,则在使用静态字段之前对其进行初始化。
- 当在类中定义静态构造函数时,静态字段在其使用之前或作为(之前)实例创建的一部分初始化。
- 如果在静态方法中没有访问静态字段并且调用静态方法。 只有在该类中定义了静态构造函数时,才会初始化静态字段。
- 如果可能的话,应该避免在类中使用静态构造函数。
1.-3。你不能确切知道它何时发生,所以你不能依赖它。 静态构造函数可以让您稍微控制调用它时会发生什么。
public class UtilityClass { // // Resources // // r1 will be initialized by the static constructor static Resource1 r1 = null; // r2 will be initialized first as static constructors are // invoked after the static variables are initialized static Resource2 r2 = new Resource2(); static UtilityClass() { r1 = new Resource1(); } static void f1(){} static void f2(){} }
4.静态构造函数很慢
静态构造函数执行的确切时间取决于实现,但遵循以下规则:
你的所有观点都是正确的。
应避免使用静态构造函数的原因是因为编译器会在调用类的任何方法的任何地方注入代码,以检查是否已调用静态构造函数。 这会对性能产生负面影响。
你可以做的是在你的类中有一个私有静态字段,当调用默认(或其他非静态)构造函数时,该字段被赋予一个虚拟值。 这将初始化对象创建时的所有静态字段。
上述就是C#学习教程:静态变量初始化分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/961139.html