다음을 통해 공유


제네릭 수학의 일관된 이동 동작

제네릭 수학의 시프트 연산은 이제 모든 기본 제공 정수 형식에서 일관된 동작을 갖습니다.

이전 동작

이전에는 제네릭 수학을 사용하여 교대 근무를 수행할 때의 동작은 T 형식에 따라 다를 수 있습니다. 경우에 따라 이동 양을 sizeof(T) - 1으로 적절하게 가렸습니다. 그리고 다른 경우에는 마스킹이 없었습니다. 즉, "오버시프트"(예: byte 8로 이동)는 예상과 다른 답변을 초래할 수 있습니다.

새 동작

구현은 모든 기본 제공 정수 형식과 System.Numerics.IShiftOperators<TSelf,TOther,TResult> 인터페이스에서 문서화된 동작을 통해 일관된 동작을 보장하기 위해 필요에 따라 교대 근무량을 마스킹하도록 업데이트되었습니다.

도입된 버전

.NET 10

호환성이 손상되는 변경 유형

이 변경은 행동 변화입니다.

변경 이유

C#의 작은 정수 형식에 대해 마스킹이 작동하는 방식의 차이로 인해 동작이 디자인된 동작과 다릅니다.

이전의 일관되지 않은 동작을 사용하는 코드를 업데이트하여 새로운 일관된 동작으로 작동하도록 합니다.

영향을 받는 API

  • operator <<
  • operator >>
  • 제네릭 수학을 사용할 경우, operator >>>, byte, char, sbyteshort에 대해 ushort을 사용하려면 Twhere T : IShiftOperators<T, int, T> 또는 유사한 인터페이스로 제한되어야 합니다.