Rumah > pembangunan bahagian belakang > C++ > Mengapa Kaedah Statik Tidak Boleh Melaksanakan Antara Muka dalam C#?

Mengapa Kaedah Statik Tidak Boleh Melaksanakan Antara Muka dalam C#?

Patricia Arquette
Lepaskan: 2025-01-20 12:32:09
asal
416 orang telah melayarinya

Why Can't Static Methods Implement Interfaces in 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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan