Sprzętowe testy wewnętrzne IsSupported mogą się różnić w przypadku typów zagnieżdżonych

Sprawdzanie <Isa>.X64.IsSupported, gdzie <Isa> odwołuje się do klas w System.Runtime.Intrinsics.X86 przestrzeni nazw, może teraz wygenerować inny wynik do poprzednich wersji platformy .NET.

Napiwek

ISA oznacza architekturę standardową w branży.

Wprowadzona wersja

5,0

Opis zmiany

W poprzednich wersjach platformy .NET niektóre typy System.Runtime.Intrinsics.X86 wewnętrzne sprzętu, na przykład , System.Runtime.Intrinsics.X86.Aesnie uwidoczniły zagnieżdżonej X64 klasy. W przypadku tych typów wywoływanie <Isa>.X64.IsSupported rozpoznawane jako IsSupported właściwość w zagnieżdżonej X64 klasie nadrzędnej klasy <Isa>. Oznaczało to, że właściwość może zwrócić true nawet wtedy, gdy <Isa>.IsSupported zwraca wartość false.

W wersjach .NET 5 i nowszych System.Runtime.Intrinsics.X86 wszystkie typy uwidaczniają klasę zagnieżdżoną X64 , która odpowiednio raportuje obsługę. Gwarantuje to, że ogólna hierarchia pozostaje poprawna, a jeśli <Isa>.X64.IsSupported jest trueto , <Isa>.IsSupported można również przyjąć wartość true.

Przyczyna wprowadzenia zmiany

To było zamierzone, że jeśli <Isa>.X64.IsSupported jest true, <Isa>.IsSupported jest również implikowane jako true. Jednak ze względu na sposób działania rozpoznawania składowych w języku C#, klasy, które nie miały klasy zagnieżdżonej X64 , uwidoczniły sytuację, w której nie zawsze miało to miejsce i doprowadziły do błędów w kodzie użytkownika.

W razie potrzeby dostosuj kod sprawdzający IsSupported , aby sprawdzić, czy jest odpowiednia usługa ISA.

Dotyczy interfejsów API