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() { } }
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:
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!