静态私有数据成员未在静态类中初始化?

Rob*_*ler 0 c# static initialization static-classes

鉴于下面的C#代码,我希望立即初始化私有数据成员_userDataStorage.相反,我发现它根本没有被初始化.我在初始化语句上放了一个断点,它永远不会被命中.这意味着DB静态属性始终返回NULL.静态类的工作方式与非静态类的工作方式不同吗?

public static class UserDataStorageWrapper
{
    private static UserDataStorage _userDataStorage = new UserDataStorage();

    public static UserDataStorage DB
    { 
        get
        {
            return _userDataStorage;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我将更改代码以检查NULL并立即初始化_userDataStorage.但我想在这里确定我的期望.

MAV*_*MAV 6

由于它是静态初始化程序,因此它将在" 首次使用该类的静态字段之前的实现相关时间 "初始化.资源

因此,除非您使用该字段(或该类中的其他静态字段),否则您的断点可能不会被命中.


为了完整性,我可以补充说,如果有静态构造函数,静态字段初始值设定项将在静态构造函数之前执行.