次の方法で共有


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

DataContractSerializerDataContractJsonSerializer は、入力 "-0" を float または double として逆シリアル化するときに、以前に符号を破棄しました。 どちらのシリアライザーも、入力として "-0.0" を指定したときに常に正しいことを行っていましたが、入力が "-0" の場合、符号は失われました。 この動作は一貫性がなく、データが失われます。 さらに、これらのシリアライザーは、シリアル化中に負のゼロの値を "-0" として書き込みます。

以前の動作

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

新しい動作

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

導入されたバージョン

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

破壊的変更の種類

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

変更の理由

以前の動作は一貫性がなく、結果としてデータが失われました。

ほとんどの場合、アクションは必要ありません。 コードがバグの影響を受けた場合、これは適切な変更です。 または、この変更によって壊れる可能性が低い方法で、既にバグを回避しています。

影響を受ける API