Effective C# Item13:使用静态构造器初始化静态类成员
2014-07-24 11:11
417 查看
在创建类型的任何实例之前,我们需要初始化这个类型中的静态成员变量,C#可以通过静态初始化器或者静态构造函数来完成这个任务,其中静态构造器是一个特殊的函数,它会在一个类的任何方法、变零或者属性被访问之前执行。
我们不应该使用类型的示例构造函数或者类型中的某些非静态方法来初始化类型的静态成员变量。
如果静态成员初始化的过程不复杂,那么我们可以在类型的初始化器中对其进行初始化;如果静态成员初始化时,需要执行大量的逻辑操作,那么我们可以将其初始化的过程提取到静态构造函数中。
我们可以使用静态构造函数来实现设计模式中的单例模式,如以下代码所示。
和示例初始化器类似,静态初始化器会在静态构造函数中的显式代码之前执行,同样,静态初始化器也会在基类的静态构造函数之前执行。
静态初始化器和静态构造函数为我们类型中的静态成员提供了最清晰的初始化方式,使用这种方法,代码既容易阅读,也不易发生错误。C#语言使用它们很好的解决了其他语言中静态成员初始化的问题。
我们不应该使用类型的示例构造函数或者类型中的某些非静态方法来初始化类型的静态成员变量。
如果静态成员初始化的过程不复杂,那么我们可以在类型的初始化器中对其进行初始化;如果静态成员初始化时,需要执行大量的逻辑操作,那么我们可以将其初始化的过程提取到静态构造函数中。
我们可以使用静态构造函数来实现设计模式中的单例模式,如以下代码所示。
public class MySingleton { private static readonly MySingleton _theOneAndOnly = new MySingleton( ); public static MySingleton TheOnly { get { return _theOneAndOnly; } } private MySingleton( ) { } // remainder elided }
和示例初始化器类似,静态初始化器会在静态构造函数中的显式代码之前执行,同样,静态初始化器也会在基类的静态构造函数之前执行。
静态初始化器和静态构造函数为我们类型中的静态成员提供了最清晰的初始化方式,使用这种方法,代码既容易阅读,也不易发生错误。C#语言使用它们很好的解决了其他语言中静态成员初始化的问题。
相关文章推荐
- Effective C# Item13:使用静态构造器初始化静态类成员
- 《Effective C#》Item 13:使用静态构造函数初始化静态成员
- 《Effective C#》Item 13:使用静态构造函数初始化静态成员
- 《Effective C#》Item 13:使用静态构造函数初始化静态成员
- 《Effective C#》Item 13:使用静态构造函数初始化静态成员
- More Effective C# Item6 : 使用委托定义类型参数上的方法约束
- Effective C# 原则13:用静态构造函数初始化类的静态成员 转
- More Effective C# Item1 : 使用1.x框架API的泛型版本
- C#箴言:用静态构造函数初始化静态成员
- Effective C# Item43 : 避免过度使用反射
- C#箴言:用静态构造函数初始化静态成员
- 《Effective C#》Item 12:推荐使用成员初始化语句
- Effective C# 使用静态构造函数初始化静态成员
- 【转】Effective C# Item13: Initialize Static Class Membe
- 《Effective C#》Item 12:推荐使用成员初始化语句
- Effective C# Item39 : 使用.NET验证
- [翻译] Effective C++, 3rd Edition, Item 13: 使用 objects(对象)管理资源
- Effective C# 原则13:用静态构造函数初始化类的静态成员(译)
- c#使用静态成员
- More Effective C# Item8 :尽可能使用泛型方法,除非需要将类型参数用于实例的字段中