Rumah > pembangunan bahagian belakang > C++ > Mengapa Antara Muka Tidak Dapat Menentukan Tandatangan Pembina dalam C#?

Mengapa Antara Muka Tidak Dapat Menentukan Tandatangan Pembina dalam C#?

Mary-Kate Olsen
Lepaskan: 2024-12-30 11:58:10
asal
741 orang telah melayarinya

Why Can't Interfaces Define Constructor Signatures in C#?

Mentakrifkan Tandatangan Pembina dalam Antara Muka

Dalam C#, antara muka menyediakan kontrak yang mentakrifkan satu set kaedah dan sifat yang kelas yang melaksanakan antara muka mesti mematuhi. Walau bagaimanapun, antara muka secara tradisinya tidak menyatakan butiran pelaksanaan, termasuk tandatangan pembina.

Mengapa anda tidak boleh mentakrifkan pembina dalam antara muka?

Ketidakupayaan untuk menentukan sesuatu pembina dalam antara muka berpunca daripada sifat asas antara muka. Antara muka ialah kontrak abstrak yang tidak mempunyai pelaksanaannya sendiri. Apabila kelas melaksanakan antara muka, ia menyediakan pelaksanaannya sendiri untuk kaedah dan sifat yang ditakrifkan dalam antara muka. Pembina, sebaliknya, bertanggungjawab untuk memulakan keadaan objek dan khusus untuk pelaksanaan kelas tertentu.

Akibatnya, antara muka tidak mempunyai pelaksanaan sendiri dan oleh itu tidak boleh menentukan pembinanya sendiri. Pembina ialah sebahagian daripada pelaksanaan kelas dan ditakrifkan sebagai sebahagian daripada takrifan kelas, bukan antara muka yang dilaksanakannya.

Contoh

Pertimbangkan antara muka dan kelas berikut :

interface IDrawable
{
    void Update();
    void Draw();
}

class MyDrawable : IDrawable
{
    private GraphicsDeviceManager _manager;

    public MyDrawable(GraphicsDeviceManager manager)
    {
        _manager = manager;
    }

    public void Update() { }
    public void Draw() { }
}
Salin selepas log masuk

Dalam contoh ini, kelas MyDrawable melaksanakan antara muka IDrawable. Walau bagaimanapun, antara muka IDrawable tidak mentakrifkan pembina. Pembina ditakrifkan dalam kelas MyDrawable dan bertanggungjawab untuk memulakan pembolehubah ahli GraphicsDeviceManager objek.

Alternatif

Walaupun antara muka tidak menyokong definisi pembina, terdapat cara lain untuk memulakan objek keadaan:

  • Pemula Harta: Sifat dalam antara muka boleh dimulakan menggunakan nilai lalai. Ini membenarkan beberapa konfigurasi awal objek apabila ia dicipta.
  • Kaedah Kilang: Kaedah kilang ialah kaedah statik yang biasanya ditakrifkan dalam kelas yang bertanggungjawab untuk mencipta tika kelas lain. Kaedah kilang boleh digunakan untuk menguatkuasakan kekangan pembinaan tertentu, seperti menghantar parameter yang diperlukan kepada pembina objek.
  • Suntikan Ketergantungan: Suntikan Ketergantungan ialah corak reka bentuk yang mana objek dimulakan dengan kebergantungan mereka dihantar kepada mereka melalui kaedah pembina atau penetap. Ini membolehkan pemulaan objek yang lebih fleksibel dan memisahkan penciptaan objek daripada kebergantungannya.

Atas ialah kandungan terperinci Mengapa Antara Muka Tidak Dapat Menentukan Tandatangan Pembina 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