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.
Önerilen eylem
.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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin