DataContractSerializer zachowuje znak podczas deserializacji -0
DataContractSerializer i DataContractJsonSerializer wcześniej odrzucił znak podczas deserializacji danych wejściowych "-0" jako zmiennoprzecinkowe lub podwójne. Oba serializatory zawsze robiły właściwą rzecz, gdy podano "-0.0" jako dane wejściowe, ale z danymi wejściowymi "-0", znak został utracony. To zachowanie jest zarówno niespójne, jak i powoduje utratę danych. Ponadto te serializatory zapisują wartość ujemnego zera jako "-0" podczas serializacji.
Poprzednie zachowanie
Wcześniej znak ujemny został utracony podczas deserializacji "-0" (ale nie "-0.0") jako zmiennoprzecinkowy lub podwójny przy użyciu metody DataContractSerializer.
Nowe zachowanie
Znak ujemny jest teraz zachowywany podczas deserializacji "-0" jako zmiennoprzecinkowe lub podwójne.
Wprowadzona wersja
- .NET 6.0.11 (wersja serwisowa)
- .NET 7
Typ zmiany powodującej niezgodność
Ta zmiana może mieć wpływ na zgodność binarną.
Przyczyna wprowadzenia zmiany
Poprzednie zachowanie było niespójne i spowodowało utratę danych.
Zalecana akcja
W większości przypadków nie jest wymagana żadna akcja. Jeśli twój kod został naruszony przez usterkę, jest to dobra zmiana. Lub, udało Ci się już obejść usterkę w sposób, który prawdopodobnie nie zostanie złamany przez tę zmianę.