Hardwareintrinsische IsSupported-Überprüfungen können für geschachtelte Typen abweichen

Bei der Überprüfung von <Isa>.X64.IsSupported, wobei <Isa> auf die Klassen im Namespace System.Runtime.Intrinsics.X86 verweist, kann das Ergebnis jetzt von früheren .NET-Versionen abweichen.

Tipp

ISA steht für Industriestandardarchitektur.

Eingeführt in Version

5.0

Änderungsbeschreibung

In früheren .NET-Versionen machten einige der hardwareintrinsischen System.Runtime.Intrinsics.X86-Typen wie System.Runtime.Intrinsics.X86.Aes keine geschachtelte X64-Klasse verfügbar. Für diese Typen wurde der Aufruf von <Isa>.X64.IsSupported in eine IsSupported-Eigenschaft in einer geschachtelten X64-Klasse aufgelöst, der die Klasse <Isa> übergeordnet ist. Das bedeutete, dass die Eigenschaft true zurückgeben konnte, auch wenn <Isa>.IsSupportedfalse zurückgibt.

In .NET 5 und höher machen alle System.Runtime.Intrinsics.X86-Typen eine geschachtelte X64-Klasse verfügbar, die Unterstützung entsprechend meldet. Dadurch wird sichergestellt, dass die allgemeine Hierarchie korrekt erhalten bleibt. Wenn <Isa>.X64.IsSupportedtrue entspricht, kann zudem angenommen werden, dass <Isa>.IsSupportedtrue entspricht.

Grund für die Änderung

Wenn <Isa>.X64.IsSupportedtrue entspricht, ist beabsichtigt, dass für <Isa>.IsSupportedtrue impliziert werden kann. Aufgrund der Funktionsweise der Memberauflösung in C# führten Klassen ohne geschachtelte X64-Klasse in Situationen, in denen das nicht der Fall war, zu Fehlern im Benutzercode.

Passen Sie Code mit Überprüfungen auf IsSupported ggf. an, damit die richtige ISA überprüft wird.

Betroffene APIs