DataContractSerializer는 -0을 역직렬화할 때 기호를 유지

DataContractSerializerDataContractJsonSerializer는 이전에 입력 ‘-0’을 부동 또는 이중으로 역직렬화할 때 기호를 삭제했습니다. 두 직렬 변환기는 ‘-0.0’을 입력으로 제공했을 때 항상 올바른 작업을 수행했지만 입력이 ‘-0’인 경우 기호가 손실되었습니다. 이 동작은 일관성이 없으며 데이터 손실이 발생합니다. 또한 이러한 직렬 변환기는 serialization 중에 음수 0의 값을 ‘-0’으로 씁니다.

이전 동작

이전에는 DataContractSerializer를 사용하여 ‘-0’(‘-0.0’이 아님)을 float 또는 double로 역직렬화할 때 음수 기호를 상실했습니다.

새 동작

이제 ‘-0’을 float 또는 double로 역직렬화할 때 음수 기호가 유지됩니다.

도입된 버전

  • .NET 6.0.11(서비스 릴리스)
  • .NET 7

호환성이 손상되는 변경의 형식

이 변경은 이진 호환성에 영향을 줄 수 있습니다.

변경 이유

이전 동작이 일관되지 않았고 이로 인해 데이터 손실이 발생했습니다.

대부분의 경우 아무 작업도 필요하지 않습니다. 코드가 버그의 영향을 받았다면 이는 좋은 변경입니다. 또는 이 변경으로 인해 손상될 가능성이 거의 없는 방식으로 버그를 이미 해결했습니다.

영향을 받는 API