Поделиться через


DataContractSerializer сохраняет знак при десериализации -0

DataContractSerializerи DataContractJsonSerializer ранее не карта знак при десериализации входных данных "-0" в виде плавающей или двойной. Оба сериализатора всегда сделали правильное действие при указании "-0,0" в качестве входных данных, но при входе "-0" знак был потерян. Это поведение является несогласованным и приводит к потере данных. Кроме того, эти сериализаторы записывают значение отрицательного нуля как "-0" во время сериализации.

Прежнее поведение

Ранее отрицательный знак был потерян при десериализации "-0" (но не "-0,0") в качестве плавающего или двойного использования DataContractSerializer.

Новое поведение

Отрицательный знак теперь сохраняется при десериализации "-0" в виде плавающей или двойной.

Представленные версии

  • .NET 6.0.11 (выпуск обслуживания)
  • .NET 7

Тип критического изменения

Это изменение может повлиять на совместимость двоичного кода.

Причина изменения

Предыдущее поведение было несогласованным и привело к потере данных.

В большинстве случаев никаких действий выполнять не требуется. Если ваш код пострадал от ошибки, это хорошее изменение. Или вы уже работали над ошибкой таким образом, что вряд ли будет нарушено этим изменением.

Затронутые API