İç içe yerleştirilmiş türler için donanım iç içe IsSupported denetimleri farklı olabilir

öğesinin denetlenerek <Isa>.X64.IsSupported<Isa> ad alanı içindeki sınıflara başvuruda bulunduğu System.Runtime.Intrinsics.X86 durumlarda artık .NET'in önceki sürümlerinden farklı bir sonuç elde edilebilir.

İpucu

ISA , endüstri standardı mimarinin kısaltmasıdır.

Sürüm kullanıma sunulmuştur

5.0

Açıklama değiştirildi

.NET'in önceki sürümlerinde, donanım içi türlerden System.Runtime.Intrinsics.X86 bazıları (örneğin, System.Runtime.Intrinsics.X86.Aes) iç içe X64 geçmiş bir sınıfı kullanıma sunmamıştı. Bu türler için çağrısı <Isa>.X64.IsSupported , öğesinin IsSupported üst sınıfının iç içe bir X64 sınıfındaki <Isa>bir özelliğe çözümlendi. Bu, özelliğinin döndürdüğünde <Isa>.IsSupportedfalsebile döndürülebileceği true anlamına geliyordu.

.NET 5 ve sonraki sürümlerde, tüm System.Runtime.Intrinsics.X86 türler uygun şekilde destek sunan iç içe X64 geçmiş bir sınıfı kullanıma sunar. Bu, genel hiyerarşinin doğru kalmasını ve ise <Isa>.X64.IsSupportedtrue<Isa>.IsSupported olduğu varsayılmasını truesağlar.

Değişiklik nedeni

ise <Isa>.X64.IsSupportedtrue, <Isa>.IsSupported olarak da belirtilmesi trueamaçlanmıştır. Ancak, C# dilinde üye çözümlemesinin nasıl çalıştığı nedeniyle, iç içe X64 geçmiş sınıfı olmayan sınıflar bunun her zaman böyle olmadığı ve kullanıcı kodunda hatalara neden olduğu bir durum ortaya çıkar.

Gerekirse, uygun ISA'yı denetlemek için denetleyebilen IsSupported kodu ayarlayın.

Etkilenen API’ler