【问题标题】:Static field initializer is not called in Windows Phone 8 C# app在 Windows Phone 8 C# 应用程序中未调用静态字段初始化程序
【发布时间】:2014-10-09 07:41:48
【问题描述】:

我有一个静态类,其中包含一个已就地初始化的静态字段:

private static SomeType _instance = new SomeType();

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

我试图寻找对此行为的解释,但没有找到任何可以解释的东西。

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

【问题讨论】:

  • 可能实际上是一个错误,您是否尝试过为它提出 Connect 票?
  • 我猜它可能在某处被设置为null。只需添加readonly 关键字,看看问题是否仍然存在?
  • 花更多的时间在上面。没有设法创建一个可重复的场景。这很可能是一场虚惊。如果再次发生这种情况,我会更新帖子。
  • Vagif,你试过@Sriram 的建议吗?如果你添加只读,如果有任何其他代码可能会改变字段的值,你将立即得到一个编译器错误。

标签: c# c#-4.0 windows-phone-8 static-initialization


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-30
    • 1970-01-01
    • 2015-05-24
    • 1970-01-01
    • 1970-01-01
    • 2017-05-31
    • 1970-01-01
    相关资源
    最近更新 更多