Udostępnij za pośrednictwem


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.

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ę.

Dotyczy interfejsów API