Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Operacje przesunięcia w matematyce ogólnej teraz zachowują się spójnie we wszystkich wbudowanych typach liczbowych całkowitych.
Poprzednie zachowanie
Wcześniej, zachowanie podczas korzystania z ogólnych obliczeń matematycznych do wykonania przesunięcia na T obiekcie mogło się różnić w zależności od typu. W niektórych przypadkach odpowiednio maskowała wartość zmiany za pomocą sizeof(T) - 1. I w innych przypadkach nie było maskowania. Oznaczało to, że "nadmierne przesunięcie" (na przykład przesunięcie byte o 8) może spowodować inne odpowiedzi niż te oczekiwane.
Nowe zachowanie
Implementacje zostały zaktualizowane, aby odpowiednio zamaskować wartość przesunięcia, zapewniając spójne działanie we wszystkich wbudowanych typach całkowitych oraz zachowanie spójne z dokumentacją interfejsu System.Numerics.IShiftOperators<TSelf,TOther,TResult>.
Wprowadzona wersja
.NET 10
Rodzaj zmiany łamiącej zgodność
Ta zmiana jest zmianą behawioralną.
Przyczyna zmiany
Zachowanie różniło się od zaprojektowanego zachowania ze względu na różnicę w sposobie działania maskowania dla małych typów liczb całkowitych w języku C#.
Zalecana akcja
Zaktualizuj dowolny kod, który opiera się na poprzednim niespójnym zachowaniu, aby upewnić się, że działa z nowym spójnym zachowaniem.
Interfejsy API, których dotyczy problem
operator <<operator >>-
operator >>>dlabyte,char,sbyte,shortiushortprzy użyciu ogólnej matematyki, co wymaga dostosowaniaTdowhere T : IShiftOperators<T, int, T>lub podobnego interfejsu.