제네릭 수학의 시프트 연산은 이제 모든 기본 제공 정수 형식에서 일관된 동작을 갖습니다.
이전 동작
이전에는 제네릭 수학을 사용하여 교대 근무를 수행할 때의 동작은 T 형식에 따라 다를 수 있습니다. 경우에 따라 이동 양을 sizeof(T) - 1으로 적절하게 가렸습니다. 그리고 다른 경우에는 마스킹이 없었습니다. 즉, "오버시프트"(예: byte 8로 이동)는 예상과 다른 답변을 초래할 수 있습니다.
새 동작
구현은 모든 기본 제공 정수 형식과 System.Numerics.IShiftOperators<TSelf,TOther,TResult> 인터페이스에서 문서화된 동작을 통해 일관된 동작을 보장하기 위해 필요에 따라 교대 근무량을 마스킹하도록 업데이트되었습니다.
도입된 버전
.NET 10
호환성이 손상되는 변경 유형
이 변경은 행동 변화입니다.
변경 이유
C#의 작은 정수 형식에 대해 마스킹이 작동하는 방식의 차이로 인해 동작이 디자인된 동작과 다릅니다.
권장 작업
이전의 일관되지 않은 동작을 사용하는 코드를 업데이트하여 새로운 일관된 동작으로 작동하도록 합니다.
영향을 받는 API
operator <<operator >>- 제네릭 수학을 사용할 경우,
operator >>>,byte,char,sbyte및short에 대해ushort을 사용하려면T이where T : IShiftOperators<T, int, T>또는 유사한 인터페이스로 제한되어야 합니다.
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET