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

DataContractSerializer et DataContractJsonSerializer ont précédemment ignoré le signe lors de la désérialisation de l’entrée « -0 » en tant que nombre flottant ou nombre 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 désormais conservé lors de la désérialisation de « -0 » en tant que nombre flottant ou nombre double.

Version introduite

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

Type de changement cassant

Cette modification peut affecter la compatibilité binaire.

Raison de la modification

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

Dans la plupart des cas, aucune action n’est nécessaire. Si votre code a été affecté par le bogue, il s’agit d’un bon changement. 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