字段modifyDate永远不会分配给,并且始终具有其默认值0

use*_*794 3 c# debugging compiler-warnings

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

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

public DateTime lastModified 
{
    get { return DateTimeConverter.FromUnixTime(modifyDate); }
}
Run Code Online (Sandbox Code Playgroud)

Tho*_*ler 7

这是一个编译器警告,这意味着编译器在编译时找不到任何会分配值的代码.但是,仍有可能在运行时分配值.在你的情况下,这是由DataContractJsonSerializer.

如果您知道,可以通过编写禁用警告

#pragma warning disable 0649
Run Code Online (Sandbox Code Playgroud)

在受影响的代码行之前

#pragma warning restore 0649
Run Code Online (Sandbox Code Playgroud)

在代码行之后.

通常,您还应该添加注释,以便使用该pragma指令,例如

// This field is assigned to by JSON deserialization
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案。这既解释了我收到警告的原因以及如何防止它。谢谢。 (2认同)