Evo*_*lor 4 c# static dictionary initialization global-variables
我的字典声明如下:
private static Dictionary<string, Dictionary<string, string>> myDictionary;
Run Code Online (Sandbox Code Playgroud)
我想全局初始化它.我最接近的是初始化外部词典,但仍然留下了对内部词典的空引用:
private static Dictionary<string, Dictionary<string, string>> myDictionary
= new Dictionary<string, Dictionary<string, string>>();
Run Code Online (Sandbox Code Playgroud)
我需要避免在方法中初始化它,因为我不想强迫用户在能够使用我的类之前调用方法.用户只能访问静态方法.我可以在调用其中一个方法时创建一个单例,但那很脏.
如何在全球范围内声明这两个词典?其中一个的东西(虽然都没有编译):
private static Dictionary<string, Dictionary<string, string>> myDictionary
= new Dictionary<string, new Dictionary<string, string>>();
Run Code Online (Sandbox Code Playgroud)
要么
private static Dictionary<string, string> inner = new Dictionary<string, string>();
private static Dictionary<string, Dictionary<string, string>> myDictionary
= new Dictionary<string, inner>();
Run Code Online (Sandbox Code Playgroud)
像这样使用静态构造函数(假设myDictionary
变量在一个名为的类中MyClass
):
public class MyClass
{
private static Dictionary<string, Dictionary<string, string>> myDictionary;
static MyClass()
{
//Initialize static members here
myDictionary = new Dictionary<string, Dictionary<string, string>>();
myDictionary.Add("mykey", new Dictionary<string, string>());
...
}
}
Run Code Online (Sandbox Code Playgroud)
框架将确保在访问类的任何成员之前自动执行静态构造函数.