Condividi tramite


DataContractSerializer mantiene il segno durante la deserializzazione di -0

DataContractSerializer e DataContractJsonSerializer in precedenza rimuovevano il segno durante la deserializzazione dell'input "-0" come float o double. Entrambi i serializzatori hanno sempre fatto la cosa giusta quando, dato "-0.0" come input, ma con un input di "-0", il segno si perdeva. Questo comportamento è incoerente e si traduce in una perdita di dati. Inoltre, questi serializzatori scrivono un valore negativo pari a zero come "-0" durante la serializzazione.

Comportamento precedente

In precedenza, il segno negativo si perdeva durante la deserializzazione di "-0" (ma non "-0.0") come float o double usando DataContractSerializer.

Nuovo comportamento

Il segno negativo ora viene mantenuto durante la deserializzazione di "-0" come float o double.

Versione introdotta

  • .NET 6.0.11 (versione di manutenzione)
  • .NET 7

Tipo di modifica che causa un'interruzione

Questa modifica può influire sulla compatibilità binaria.

Motivo della modifica

Il comportamento precedente era incoerente e causava la perdita di dati.

Nella maggior parte dei casi non è necessaria alcuna azione. Se il tuo codice è stato interessato dal bug, allora questa è una modifica valida. Oppure, hai già aggirato il bug in modo che difficilmente questa modifica ti riguarderà.

API interessate