Konzistentní chování posunu v obecné matematice

Operace směny v obecné matematice teď mají konzistentní chování napříč všemi integrovanými typy celých čísel.

Předchozí chování

Dříve se chování při použití obecné matematiky k provedení posunu na typu T mohlo lišit. V některých případech bylo posunutí odpovídajícím způsobem maskováno pomocí sizeof(T) - 1. A v jiných případech nebylo žádné maskování. To znamená, že "nadměrný posun" (například posun byte o 8) může vést k jiným výsledkům, než se očekávalo.

Nové chování

Implementace byly aktualizovány tak, aby maskovaly velikost posunu, a tím bylo zajištěno konzistentní chování napříč všemi vestavěnými celočíselnými typy a způsobem zdokumentovaným rozhraním System.Numerics.IShiftOperators<TSelf,TOther,TResult>.

Zavedená verze

.NET 10

Typ zásadní změny

Tato změna je změnou chování.

Důvod změny

Chování se liší od navrženého chování v důsledku rozdílu v tom, jak funguje maskování u malých celočíselových typů v jazyce C#.

Aktualizujte veškerý kód, který spoléhá na předchozí nekonzistentní chování, aby zajistil, že funguje s novým konzistentním chováním.

Ovlivněná rozhraní API

  • operator <<
  • operator >>
  • operator >>> pro byte, char, sbyte, shorta ushort při použití prostřednictvím obecné matematiky, která vyžaduje T omezené na where T : IShiftOperators<T, int, T> nebo podobné rozhraní.