Le verifiche intrinseche hardware di IsSupported possono differire per i tipi annidati.

Il controllo <Isa>.X64.IsSupported, dove <Isa> fa riferimento alle classi nello spazio dei nomi System.Runtime.Intrinsics.X86, può ora produrre un risultato diverso rispetto alle versioni precedenti di .NET.

Consiglio

ISA è l'acronimo di Instruction Set Architecture (Architettura del set di istruzioni).

Versione introdotta

5.0

Modificare la descrizione

Nelle versioni precedenti di .NET alcuni dei tipi intrinseci hardware System.Runtime.Intrinsics.X86, ad esempio, System.Runtime.Intrinsics.X86.Aes, non esponevano una classe X64 annidata. Per questi tipi, la chiamata a <Isa>.X64.IsSupported che si risolve in una proprietà IsSupported in una classe X64 annidata di una classe genitore di <Isa>. Ciò significa che la proprietà potrebbe restituire true anche quando <Isa>.IsSupported restituisce false.

In .NET 5 e versioni successive, tutti i tipi System.Runtime.Intrinsics.X86 espongono una classe X64 annidata che segnala in modo appropriato il supporto. In questo modo si garantisce che la gerarchia generale rimanga corretta e che se <Isa>.X64.IsSupported è true, <Isa>.IsSupported può anche essere considerato true.

Motivo della modifica

Si intendeva che se <Isa>.X64.IsSupported è true, si intende che anche <Isa>.IsSupported sia true. Tuttavia, a causa del funzionamento della risoluzione dei membri in C#, le classi che non avevano una classe X64 annidata esponevano una situazione in cui questo non era sempre il caso e causava bug nel codice utente.

Se necessario, modificare il codice che controlla IsSupported per verificare la presenza dell'ISA appropriato.

Le API interessate