C# 字段modifyDate从未指定给,并且始终具有其默认值0
有人能给我解释一下为什么我会收到这个警告吗?我已经对代码进行了测试,它运行正常,我得到了应该得到的值。这是一个错误的警告还是我遗漏了什么C# 字段modifyDate从未指定给,并且始终具有其默认值0,c#,debugging,compiler-warnings,C#,Debugging,Compiler Warnings,有人能给我解释一下为什么我会收到这个警告吗?我已经对代码进行了测试,它运行正常,我得到了应该得到的值。这是一个错误的警告还是我遗漏了什么 [DataMember(Name = "modifyDate")] private long modifyDate; public DateTime lastModified { get { return DateTimeConverter.FromUnixTime(modifyDate); } } 这是一个编译器警告,这意味着编
[DataMember(Name = "modifyDate")]
private long modifyDate;
public DateTime lastModified
{
get { return DateTimeConverter.FromUnixTime(modifyDate); }
}
这是一个编译器警告,这意味着编译器在编译时找不到任何会赋值的代码。但是,仍有可能在运行时分配值。在您的例子中,这是由
DataContractJsonSerializer
完成的
如果您知道这一点,可以通过编写
#pragma warning disable 0649
在受影响的代码行和
#pragma warning restore 0649
在代码行之后
通常,您还应该添加一条注释,说明使用该pragma指令的原因,例如
// This field is assigned to by JSON deserialization
那么,您希望设置什么值?也许,这是由思考决定的吗?(请注意,属性名称应以大写字母开头,以遵循.NET命名约定。)我使用的是DataContractJsonSerializer。我是C#的新手,不得不说命名惯例让我很恼火。我希望每个变量都以大写字母和驼峰大小写开头。对-这就是设置值的原因,您可以禁用警告并添加解释性注释。您能告诉我如何做到这一点吗?那么你同意这是一个错误的警告吗?搜索#pragma warning disable很棒的答案。这既解释了我为什么会收到警告,也解释了如何防止它。谢谢