DataContractSerializer behält beim Deserialisieren von -0 das Vorzeichen bei
DataContractSerializer und DataContractJsonSerializer haben das Vorzeichen zuvor verworfen, wenn die Eingabe „-0“ als Float oder Double deserialisiert wurde. Beide Serialisierer haben immer ordnungsgemäß gearbeitet, wenn „-0,0“ als Eingabe angegeben wurde, aber bei einer Eingabe von „-0“ ging das Vorzeichen verloren. Dieses Verhalten ist inkonsistent und führt zu Datenverlust. Darüber hinaus geben diese Serialisierer während der Serialisierung einen Wert mit negativer Null als „-0“ aus.
Vorheriges Verhalten
Zuvor ging das negative Vorzeichen verloren, wenn „-0“ (aber nicht „-0,0“) als Float oder Double mithilfe von DataContractSerializer deserialisiert wurde.
Neues Verhalten
Das negative Vorzeichen wird nun beibehalten, wenn „-0“ als Float oder Double deserialisiert wird.
Eingeführt in Version
- .NET 6.0.11 (Wartungsversion)
- .NET 7
Typ des Breaking Changes
Diese Änderung kann sich auf die binäre Kompatibilität auswirken.
Grund für die Änderung
Das vorherige Verhalten war inkonsistent und führte zu Datenverlust.
Empfohlene Maßnahme
In den meisten Fällen ist keine Aktion erforderlich. Wenn Ihr Code von dem Fehler betroffen war, ist dies eine sinnvolle Änderung. Oder Sie haben den Fehler bereits auf eine Art und Weise umgangen, die durch diese Änderung wahrscheinlich nicht beeinträchtigt wird.