在Windows Phone 8 C#app中不调用静态字段初始值设定项

Vag*_*lov 5 c# static-initialization c#-4.0 windows-phone-8

我有一个静态类,其静态字段已初始化到位:

private static SomeType _instance = new SomeType();
Run Code Online (Sandbox Code Playgroud)

此代码是在多个平台上使用的可移植类库的一部分.在桌面平台上一切正常,但在为Windows Phone 8编译时,_instance为空.但是,如果我将初始化移动到默认的静态构造函数,则_instance会正确初始化.

我试图寻找这种行为的解释,但没有找到任何可以解释它的东西.

更新.我花了一些时间尝试创建一个可重复的步骤序列来重现错误,但在某些时候,即使我切换回原始代码,也不再发生错误.我得出的结论是,这是一个误报,问题显然是由其他原因造成的.离开它没有解释我感到不舒服,但到目前为止,我没有理由相信这与静态字段初始化有关.

小智 0

您需要确保没有其他任何东西更新静态值,因为静态属性将在创建应用程序域时初始化。