DataContractSerializer と DataContractJsonSerializer は、入力 "-0" を float または double として逆シリアル化するときに、以前に符号を破棄しました。 どちらのシリアライザーも、入力として "-0.0" を指定したときに常に正しいことを行っていましたが、入力が "-0" の場合、符号は失われました。 この動作は一貫性がなく、データが失われます。 さらに、これらのシリアライザーは、シリアル化中に負のゼロの値を "-0" として書き込みます。
以前の動作
以前は、を使用して "-0" (ただし、"-0.0" DataContractSerializer) を float または double として逆シリアル化すると、負の符号が失われました。
新しい動作
"-0" を float または double として逆シリアル化するときに、負の符号が保持されるようになりました。
導入されたバージョン
- .NET 6.0.11 (サービス リリース)
- .NET 7
破壊的変更の種類
この変更は 、バイナリの互換性に影響する可能性があります。
変更の理由
以前の動作は一貫性がなく、結果としてデータが失われました。
推奨されるアクション
ほとんどの場合、アクションは必要ありません。 コードがバグの影響を受けた場合、これは適切な変更です。 または、この変更によって壊れる可能性が低い方法で、既にバグを回避しています。
影響を受ける API
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET