DataContractSerializer が -0 を逆シリアル化する際に符号を保持する

DataContractSerializerDataContractJsonSerializer は以前、入力 "-0" を float または double として逆シリアル化するとき、符号を破棄していました。 どちらのシリアライザーも、入力として "-0.0" が与えられると常に正しい動作をしましたが、"-0" の入力では符号が失われていました。 この動作は一貫性がなく、データの損失にもつながります。 さらに、これらのシリアライザーは、シリアル化の際に負のゼロの値を "-0" として書き出します。

以前の動作

以前は、DataContractSerializer を使って ("-0.0" では "なく") "-0" を float または double として逆シリアル化すると、負の符号が失われました。

新しい動作

"-0" を float または double として逆シリアル化するときに負の符号が保持されるようになりました。

導入されたバージョン

  • .NET 6.0.11 (サービス リリース)
  • .NET 7

破壊的変更の種類

この変更は、バイナリの互換性に影響を与える可能性があります。

変更理由

以前の動作は一貫性がなく、データの損失にもつながりました。

ほとんどの場合、何もする必要はありません。 コードがバグの影響を受けていた場合、これは適切な変更です。 あるいは、この変更での破損があり得ない方法で、既にバグを回避している場合もあります。

影響を受ける API