2015-04-12 36 views
2

有人可以向我解釋爲什麼我得到這個警告?我已經測試了代碼,它的工作原理,我得到了我應該得到的價值。這是一個錯誤的警告還是有我缺少的東西?字段modifyDate從來沒有分配給,並將始終有其默認值0

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

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

那麼你期望*設置*值?也許是由反思決定的? (請注意,您的屬性名稱應以大寫字母開頭以遵循.NET命名約定。) –

+0

我正在使用DataContractJsonSerializer。我是C#的新手,不得不說,命名約定令我煩惱。我寧願用大寫字母和駱駝案例來啓動每個變量。 – user1970794

+0

正確 - 這就是設置值的方法,您可以禁用警告並添加註釋。 –

回答

4

這是一個編譯器警告,這意味着編譯器無法找到編譯時任何代碼,將分配一個值。但是,仍有可能在運行時間處分配值。在你的情況下,這是由DataContractJsonSerializer完成的。

如果您知道,您可以通過一行代碼後寫

#pragma warning disable 0649 
受影響的代碼行前

#pragma warning restore 0649 

禁用警告。

通常您還應該添加註釋,以便您使用該編譯指示的原因。

// This field is assigned to by JSON deserialization 
+0

很棒的回答。這就解釋了爲什麼我得到警告以及如何預防它。謝謝。 – user1970794

相關問題