Compartilhar via


DataContractSerializer retém o sinal ao desserializar -0

DataContractSerializer e DataContractJsonSerializer descartaram anteriormente o sinal ao desserializar a entrada "-0" como um float ou duplo. Ambos os serializadores sempre fizeram a coisa certa quando receberam "-0.0" como entrada, mas com uma entrada de "-0", o sinal foi perdido. Esse comportamento é inconsistente e resulta em perda de dados. Além disso, esses serializadores gravam um valor de zero negativo como "-0" durante a serialização.

Comportamento anterior

Anteriormente, o sinal negativo era perdido ao desserializar "-0" (mas não "-0,0") como um float ou duplo usando DataContractSerializer.

Novo comportamento

O sinal negativo agora é preservado ao desserializar "-0" como um float ou duplo.

Versão introduzida

  • .NET 6.0.11 (versão de manutenção)
  • .NET 7

Tipo de alteração interruptiva

Essa alteração pode afetar a compatibilidade binária.

Motivo da alteração

O comportamento anterior era inconsistente e resultava em perda de dados.

Na maioria dos casos, nenhuma ação é necessária. Se o código foi afetado pelo bug, essa será uma boa alteração. Ou, você já trabalhou no bug de uma maneira que seja improvável que seja interrompida por essa alteração.

APIs afetadas