I controlli IsSupported delle intrinseche hardware possono differire per i tipi nidificati

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

Suggerimento

ISA è l'acronimo di architettura standard del settore.

Versione introdotta

5.0

Descrizione delle modifiche

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

In .NET 5 e versioni successive, tutti i tipi System.Runtime.Intrinsics.X86 espongono una classe annidata X64 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, allora è possibile presumere che <Isa>.IsSupported sia true.

Motivo della modifica

Era previsto che se <Isa>.X64.IsSupported è true, è anche implicito che <Isa>.IsSupported sia true. Tuttavia, a causa del funzionamento della risoluzione dei membri in C#, le classi che non avevano una classe nidificata X64 esponevano una situazione in cui non era sempre così e questo ha causato bug nel codice utente.

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

API interessate