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.

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.

Betroffene APIs