Aracılığıyla paylaş


ECMA-335'e göre zorlama çağrısı bağımsız değişkenleri

ECMA-335 (Tablo III.9: İmza Eşleştirme), çağrı bağımsız değişkenleri için hangi örtük dönüştürmelerin desteklendiği açıklar. Bu değişiklik desteklenen dönüştürmeleri denetlemeyi ekler.

Sürüm kullanıma sunulmuştur

6,0

Açıklama değiştirildi

Önceki .NET sürümlerinde, tam zamanında (JIT) derleyici ecma-335'e göre bağımsız değişkenleri zorlamaz. Bu, bazı platformlarda tanımsız davranışlara yol açar. Örneğin, x86'da bir long değeri yazmaç olarak int geçirmek, yazmaçta tanımsız kalır.

.NET 6'dan başlayarak örtük dönüştürmeye izin verilmiyorsa JIT derleyicisi bir InvalidProgramExceptionoluşturur. hala izin verilen iki dönüştürme durumu vardır:

  • int8 ->nint 64 bit platformda (sık kullanıldığı ve hatalı koda yol açmadığı için)
  • byref ->nint

Değişiklik nedeni

Önceki davranış Arm64 Apple dahil olmak üzere bazı platformlarda sessiz ve hatalı kod oluşturulmasına neden oldu.

.NET 6'ya güncelleştirdiyseniz ve uygulamanız bu değişiklik nedeniyle özel durumlar oluşturduysa InvalidProgramException , etkilenen bağımsız değişken için açık bir dönüştürme kullanın veya çağıran bildirimini düzeltin.

Etkilenen API’ler

Yok.