DataContractSerializer conserve le signe lors de la désérialisation de -0

DataContractSerializer et DataContractJsonSerializer ne tenaient pas compte du signe quand ils désérialisaient l’entrée « -0 » sous forme de flottant ou de double. Les deux sérialiseurs ont toujours fait ce qui convenait quand ils recevaient « -0,0 » en entrée, mais avec une entrée « -0 », le signe était perdu. Ce comportement est incohérent et entraîne une perte de données. En outre, ces sérialiseurs écrivent une valeur « -0 » pour le zéro négatif lors de la sérialisation.

Comportement précédent

Auparavant, le signe négatif était perdu lors de la désérialisation de « -0 » (mais pas pour « -0,0 ») sous forme de float ou de double en utilisant DataContractSerializer.

Nouveau comportement

Le signe négatif est maintenant conservé lors de la désérialisation de « -0 » sous forme de float ou de double.

Version introduite

  • .NET 6.0.11 (version de maintenance)
  • .NET 7

Type de changement cassant

Ce changement peut affecter la compatibilité binaire.

Raison du changement

Le comportement précédent était incohérent et entraînait une perte de données.

Dans la plupart des cas, aucune action n’est nécessaire. Si votre code était affecté par le bogue, ce changement est une bonne chose. Vous avez peut-être aussi pu contourner le bogue d’une façon qui ne risque pas de poser problème avec ce changement.

API affectées