C# Pelaksanaan antara muka: Kaedah tersembunyi dan eksplisit
Antara muka dalam C# mentakrifkan kontrak yang mesti diikuti oleh kelas atau struktur. Apabila melaksanakan antara muka, anda boleh memilih dua kaedah: pelaksanaan tersembunyi dan pelaksanaan eksplisit.
pelaksanaan tersembunyi
membetulkan kaedah antara muka sebagai sebahagian daripada kelas atau struktur. Kaedah ini boleh diakses dalam dua cara: kelas dan antara muka. Contoh seperti berikut:
mengekspresikan
<code class="language-csharp">public interface ICopyable { void CopyTo(Array array, int index); } public class MyClass : ICopyable { public void CopyTo(Array array, int index) { // 实现代码 } }</code>
bila menggunakan pelaksanaan tersembunyi atau eksplisit
<code class="language-csharp">public interface ICopyable { void CopyTo(Array array, int index); } public class MyClass : ICopyable { void ICopyable.CopyTo(Array array, int index) { // 实现代码 } }</code>
pelaksanaan tersembunyi . Ia memudahkan kod dengan menghapuskan keperluan definisi kaedah eksplisit.
mengekspresikan :
Anda perlu merealisasikan beberapa antara muka dengan nama kaedah yang sama tetapi melaksanakan berbeza. Ia perlu dilaksanakan dari antara muka tersembunyi dari API awam kelas atau struktur.
Kelebihan: membolehkan kawalan yang lebih terperinci untuk melaksanakan butiran, dan membantu mengelakkan samar -samar apabila menentukan kaedah konflik dalam pelbagai antara muka.
Kelemahan:Kod boleh menyebabkan panjang dan rumit.
ke dalam pelaksanaan:Prinsip Panduan Microsoft mengenai Pelaksanaan Eksplisit
Prinsip bimbingan Microsoft biasanya disyorkan untuk mengelakkan pelaksanaan yang jelas kerana ia mungkin membawa kepada tingkah laku yang tidak disengajakan. Walau bagaimanapun, prinsip panduan ini mungkin dirumuskan sebelum suntikan ketergantungan (DI). Apabila menggunakan DI, antara muka biasanya diluluskan.Atas ialah kandungan terperinci Pelaksanaan antara muka yang tersirat dan eksplisit di C#: Bilakah saya harus menggunakan yang mana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!