巢狀型別的硬體內建 IsSupported 檢查可能會有不同的結果

現在檢查 <Isa>.X64.IsSupported (其中 <Isa> 代表 System.Runtime.Intrinsics.X86 命名空間中的類別) 可能產生與先前的 .NET 版本不同的結果。

提示

ISA 是指產業標準結構。

導入的版本

5.0

變更描述

在先前的 .NET 版本中,部分 System.Runtime.Intrinsics.X86 硬體內建型別 (例如 System.Runtime.Intrinsics.X86.Aes) 不會公開巢狀 X64 類別。 針對這些型別,呼叫 <Isa>.X64.IsSupported 會解析父代類別為 <Isa> 之巢狀 X64 類別上的 IsSupported 屬性。 這表示即使 <Isa>.IsSupported 傳回 false,該屬性仍可能傳回 true

在 .NET 5 和更新版本中,所有 System.Runtime.Intrinsics.X86 型別都會公開確實回報支援的巢狀 X64 類別。 這能確保一般階層保持正確,若 <Isa>.X64.IsSupportedtrue,則 <Isa>.IsSupported 也可假設為 true

變更原因

目的在於 <Isa>.X64.IsSupportedtrue 時,將 <Isa>.IsSupported 隱含視為 true。 不過,基於成員解析在 C# 中的操作方式,不具備巢狀 X64 類別的類別會公開不常見的狀況,並導致使用者程式碼出現錯誤。

如有必要,請調整檢查 IsSupported 的程式碼,確認存在適合的 ISA。

受影響的 API