Bagikan melalui


Pemeriksaan IsSupported intrinsik perangkat keras mungkin berbeda untuk jenis berlapis

Memeriksa <Isa>.X64.IsSupported, di mana <Isa> mengacu pada kelas di System.Runtime.Intrinsics.X86 namespace layanan, sekarang dapat menghasilkan hasil yang berbeda dengan versi .NET sebelumnya.

Tip

ISA adalah singkatan dari arsitektur standar industri.

Versi yang diperkenalkan

5.0

Deskripsi perubahan

Dalam versi .NET sebelumnya, beberapa jenis System.Runtime.Intrinsics.X86 perangkat keras-intrinsik, misalnya, System.Runtime.Intrinsics.X86.Aes, tidak mengekspos kelas berlapis X64 . Untuk jenis ini, panggilan <Isa>.X64.IsSupported diselesaikan ke IsSupported properti pada kelas berlapis X64 dari kelas <Isa>induk . Ini berarti bahwa properti dapat kembali true bahkan ketika <Isa>.IsSupported mengembalikan false.

Di .NET 5 dan versi yang lebih baru, semua jenis System.Runtime.Intrinsics.X86 mengekspos kelas berlapis X64 yang melaporkan dukungan dengan tepat. Ini memastikan bahwa hierarki umum tetap benar, dan bahwa jika <Isa>.X64.IsSupported adalah , maka <Isa>.IsSupported juga dapat diasumsikan sebagai truetrue.

Alasan untuk berubah

Itu dimaksudkan bahwa jika <Isa>.X64.IsSupported adalah true, <Isa>.IsSupported juga tersirat menjadi true. Namun, karena cara kerja resolusi anggota di C#, kelas yang tidak memiliki kelas berlapis X64 mengekspos situasi di mana ini tidak selalu terjadi dan menyebabkan bug dalam kode pengguna.

Jika perlu, sesuaikan kode yang memeriksa IsSupported untuk memeriksa ISA yang sesuai.

API yang Terpengaruh