【问题标题】:Field modifyDate is never assigned to, and will always have its default value 0字段 modifyDate 从未分配给,并且始终具有其默认值 0
【发布时间】:2015-04-12 23:22:44
【问题描述】:

有人可以向我解释为什么我会收到此警告吗?我已经测试了代码并且它有效,我得到了我应该在那里获得的价值。这是一个错误的警告还是我遗漏了什么?

[DataMember(Name = "modifyDate")]        
private long modifyDate;

public DateTime lastModified 
{
    get { return DateTimeConverter.FromUnixTime(modifyDate); }
}

【问题讨论】:

  • 那么您希望设置这个值是什么?也许它是通过反射设置的? (请注意,您的属性名称应以大写字母开头,以遵循 .NET 命名约定。)
  • 我正在使用 DataContractJsonSerializer。我是 C# 新手,不得不说命名约定让我很烦。我宁愿每个变量都以大写字母和驼峰式开头。
  • 正确 - 这就是设置值的原因,您可以禁用警告并添加解释性注释。
  • 你能告诉我我会怎么做吗?所以你同意这是一个错误的警告?
  • 搜索#pragma warning disable

标签: c# debugging compiler-warnings


【解决方案1】:

这是一个编译器警告,这意味着编译器在编译时找不到任何可以赋值的代码。但是,仍然有可能在运行时 分配一个值。在您的情况下,这是由 DataContractJsonSerializer 完成的。

如果你知道,你可以通过写来禁用警告

#pragma warning disable 0649

在受影响的代码行之前和

#pragma warning restore 0649

在代码行之后。

通常您还应该添加注释为什么要使用该 pragma 指令,例如

// This field is assigned to by JSON deserialization

【讨论】:

  • 很好的答案。这既解释了我收到警告的原因以及如何防止警告。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-13
  • 1970-01-01
  • 2022-01-14
相关资源
最近更新 更多