Baca dalam bahasa Inggris

Bagikan melalui


Anggota abstrak statis dideklarasikan dalam antarmuka

.NET 6 mempratinjau fitur baru di mana static anggota antarmuka dapat ditandai sebagai abstract. Fitur ini melibatkan beberapa perubahan pada spesifikasi ECMA 335 untuk memungkinkan pola metadata bahasa perantara (IL) yang sebelumnya dianggap ilegal. Untuk informasi selengkapnya, lihat dotnet/runtime#49558.

Perilaku yang lama

Jika antarmuka statis ditandai sebagai abstract:

  • Pengkompilasi C# menghasilkan kesalahan CS0112.
  • Alat dan kompilator lainnya menghasilkan metadata IL ilegal.

Perilaku yang baru

Mulai dari .NET 6, anggota antarmuka statis dapat ditandai sebagai abstract dan akan berhasil dikompilasi. Selain itu, pola metadata IL yang dihasilkan sekarang dianggap legal karena perubahan spesifikasi ECMA 335.

Implementasi static abstract anggota antarmuka disediakan oleh jenis yang mengimplementasikan antarmuka.

Catatan

Untuk .NET 6, Anda harus mengaktifkan fitur pratinjau di proyek Anda untuk dapat menandai anggota antarmuka sebagai static abstract.

Karena ini adalah pola IL yang baru legal, alat yang ada mungkin salah memproses metadata terkait dan memiliki perilaku yang tidak terduga. Kemungkinan alat akan menemukan pola metadata baru, karena antarmuka dengan static abstract anggota sekarang muncul pada jenis primitif, misalnya, System.Int32.

Versi yang diperkenalkan

.NET 6

Jenis perubahan yang melanggar

Perubahan ini dapat memengaruhi kompatibilitas biner.

Alasan untuk berubah

Perubahan ini diperkenalkan karena tidak ada cara untuk mengabstraksi atas anggota statis dan menulis kode umum yang berlaku di seluruh jenis yang menentukan anggota statis tersebut. Ini sangat bermasalah untuk jenis anggota yang hanya ada dalam bentuk statis, misalnya, operator.

Perbarui alat apa pun yang menggunakan biner .NET atau kode sumber C# untuk memperhitungkan konsep static abstract baru anggota antarmuka, termasuk yang sekarang ada pada jenis primitif .NET.

API yang Terpengaruh

T/A

Lihat juga