Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Сдвиговые операции в общей математике теперь имеют согласованное поведение во всех встроенных целочисленных типах.
Предыдущее поведение
Ранее поведение при использовании универсальной математики для выполнения сдвига на 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>или аналогичный интерфейсу.