還原序列化 -0 時,DataContractSerializer 保留的符號

DataContractSerializerDataContractJsonSerializer 先前在將輸入「-0」還原序列化為浮點數或雙精度浮點數時捨棄符號。 指定「-0.0」做為輸入,但輸入為「-0」時,這兩個序列化程式一律會正確完成動作。 這種行為既不一致,也會導致資料遺失。 此外,這些序列化程式會在序列化期間將負零的值寫入為「-0」。

先前的行為

先前,使用 DataContractSerializer 還原序列化「-0」(但不是「-0.0」) 為浮點數或雙精度浮點數時,會遺失負號。

新的行為

將「-0」還原序列化為浮點數或雙精度浮點數時,現在會保留負號。

導入的版本

  • .NET 6.0.11 (服務版本)
  • .NET 7

中斷性變更的類型

這項變更會影響二進位相容性

變更原因

先前的行為不一致,導致資料遺失。

在大部分情況下,不需要採取任何動作。 如果您的程式碼受到錯誤 (bug) 影響,則這是很好的變更。 或者,您已經以不太可能因這項變更而中斷的方式解決錯誤 (bug)。

受影響的 API