如何全局初始化全局嵌套字典?

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)

Yac*_*sad 6

像这样使用静态构造函数(假设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)

框架将确保在访问类的任何成员之前自动执行静态构造函数.