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.
Ação recomendada
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.