Dun*_*ill 7 c# static initialization
使用这种模式有什么好处或原因?
public sealed class myStaticClass
{
private static bool _initialized;
private static object _lockObject;
private static string _someStaticField;
private static int _anotherStaticField;
private static string _nthStaticField;
static myStaticClass()
{
_initialized = false;
_lockObject = new object();
}
public myStaticClass()
{
}
public static void Initialize()
{
if(!_initialized)
{
lock(_lockObject)
{
if(!_initialized)
{
//do initializing
_someStaticField = someApplicationSetting;
_anotherStaticField = anotherApplicationSetting;
_nthStaticField = nthApplicationSetting;
_initialized = true;
}
}
}
}
public static string NthStaticField
{
get {
Initialize();
return _nthOtherField;
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果在访问任何类成员之前保持静态构造函数被调用,并且只调用一次,那么为什么不将所有初始化逻辑放在静态构造函数中呢?
编辑: 我已经更新了模式,以更好地反映我发现它的.net框架中的类.我已经改变了static类的修饰符sealed,我还添加了一个空public构造函数.
PS.如果您想知道,我见过这种模式的FormsAuthentication班级是班级.
| 归档时间: |
|
| 查看次数: |
4612 次 |
| 最近记录: |