Azo*_*ous 29 c# static initialization
今天我与同事讨论并得出以下几点.如果一切正确或需要进行一些修改,请注意点亮.
sra*_*sra 10
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(){}
}
Run Code Online (Sandbox Code Playgroud)
4.静态构造函数很慢
静态构造函数执行的确切时间取决于实现,但遵循以下规则:
你的所有观点都是正确的。
应该避免使用静态构造函数的原因是,编译器会在调用类的任何方法的任何地方注入代码,以检查是否已调用静态构造函数。这对性能有负面影响。
您可以做的是在您的类中有一个私有静态字段,当调用默认(或其他非静态)构造函数时,该字段被分配一个虚拟值。这会在创建对象时初始化所有静态字段。
| 归档时间: |
|
| 查看次数: |
47300 次 |
| 最近记录: |