Rumah >pembangunan bahagian belakang >C++ >Mengapa Kaedah Statik Tidak Boleh Melaksanakan Antara Muka dalam C#?
Memahami Mengapa Kaedah Statik Tidak Melaksanakan Antara Muka dalam C#
C# melarang kaedah statik daripada melaksanakan antara muka. Sekatan ini berakar umbi dalam konsep teras antara muka: mentakrifkan kontrak tingkah laku untuk kelas.
Antara muka menentukan operasi yang mesti dilakukan oleh kelas. Kaedah statik, bagaimanapun, beroperasi pada tahap jenis, bukan pada contoh kelas tertentu. Oleh itu, membenarkan pelaksanaan antara muka kaedah statik akan bercanggah dengan prinsip pengaturcaraan berorientasikan objek.
Contoh Ilustrasi:
<code class="language-csharp">public interface IListItem { string ScreenName(); } public class Animal : IListItem { // Incorrect: Static method violates the interface contract public static string ScreenName() { return "Animal"; } // ... other members ... }</code>
Kaedah ScreenName
, idealnya, harus mengembalikan nama paparan contoh khusus IListItem
. Pelaksanaan statik untuk Animal
adalah cacat kerana ia mengembalikan "Haiwan" untuk setiap haiwan, mengabaikan ciri individu.
Penyelesaian Disyorkan:
<code class="language-csharp">public class Animal : IListItem { public const string AnimalScreenName = "Animal"; public string ScreenName() { return AnimalScreenName; } }</code>
Pendekatan yang disemak ini menggunakan sifat tetap untuk memegang nama statik. Kaedah ScreenName
kemudian mengakses pemalar ini, mengekalkan gelagat berasaskan contoh seperti yang diperlukan oleh antara muka. Ini memastikan kontrak antara muka dipenuhi dengan betul.
Atas ialah kandungan terperinci Mengapa Kaedah Statik Tidak Boleh Melaksanakan Antara Muka dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!