Share via


중첩 형식의 경우 하드웨어 내장 IsSupported 검사가 다를 수 있음

<Isa>에서 System.Runtime.Intrinsics.X86 네임스페이스의 클래스를 참조하는 <Isa>.X64.IsSupported를 확인할 경우 이전 버전의 .NET과는 다른 결과가 생성될 수 있습니다.

ISA는 업계 표준 아키텍처의 약어입니다.

도입된 버전

5.0

변경 내용 설명

이전 버전의 .NET에서는 System.Runtime.Intrinsics.X86.Aes과 같은 System.Runtime.Intrinsics.X86 하드웨어 내장 형식 중 일부가 중첩된 X64 클래스를 노출하지 않았습니다. 해당 형식에 대해 <Isa>.X64.IsSupported를 호출하면 부모 클래스 <Isa>에 중첩된 X64 클래스의 IsSupported 속성으로 확인되었습니다. 즉, <Isa>.IsSupported에서 false를 반환하는 경우에도 속성이 true를 반환할 수 있었습니다.

.NET 5 이상 버전에서는 모든 System.Runtime.Intrinsics.X86 형식이 적절하게 지원을 보고하는 중첩된 X64 클래스를 공개합니다. 따라서 일반 계층 구조가 올바르게 유지되고, <Isa>.X64.IsSupportedtrue이면 <Isa>.IsSupportedtrue로 간주할 수 있습니다.

변경 이유

<Isa>.X64.IsSupportedtrue이면 <Isa>.IsSupportedtrue로 암시되도록 하려고 했습니다. 그러나 C#에서 멤버 확인이 작동하는 방식 때문에 중첩된 X64 클래스가 없는 클래스에서 해당 사례가 아니고 사용자 코드 버그가 발생하는 상황이 노출되었습니다.

필요한 경우 IsSupported를 검사하여 적절한 ISA를 확인하는 코드를 조정합니다.

영향을 받는 API