Di Visual Studio saya dapat mengklik kanan pada antarmuka dan memilih untuk Menerapkan Antarmuka, atau Menerapkan Antarmuka Secara Eksplisit.
public class Test : ITest
{
public string Id // Generated by Implement Interface
{
get { throw new NotImplementedException(); }
}
string ITest.Id // Generated by Implement Interface Explicitly
{
get { throw new NotImplementedException(); }
}
}
Satu-satunya perbedaan yang saya lihat di antara keduanya adalah bahwa nama antarmuka ditambahkan ke properti antarmuka dan metode ketika mereka dibuat jika Anda memilih untuk mengimplementasikan antarmuka secara eksplisit.
Saya merasa itu membuat kode sedikit lebih mudah dibaca karena saya bisa melihat dari mana metode / properti itu berasal, namun apakah ini membuat perbedaan dalam bagaimana kelas digunakan atau dikompilasi? Dan apakah itu penting jika saya mengimplementasikan antarmuka saya secara implisit atau eksplisit?
Ada juga perbedaan dalam cara Anda memanggil metode.
Saat menggunakan implementasi antarmuka eksplisit , Anda harus menggunakan tipe antarmuka untuk memanggil implementasi spesifik itu.
Jadi, dalam memanggil kode Anda perlu menggunakan variabel tipe
ITest
untuk mengaksesITest.Id
.Artikel Implementasi Antarmuka Eksplisit (Panduan Pemrograman C #) di MSDN memiliki contoh yang baik.
sumber
Ini memungkinkan Anda untuk mengimplementasikan dua antarmuka yang mendefinisikan metode yang sama. Namun, jika Anda secara eksplisit mengimplementasikan antarmuka, metode hanya dapat diakses ketika variabel diketik ke antarmuka eksplisit itu.
Lihat: Tutorial Implementasi Antarmuka Eksplisit
sumber
EDIT:
Seharusnya tidak ada bedanyaAnda tidak boleh melakukannya kecuali kelas Anda mengimplementasikan dua antarmuka dengan properti yang sama, karena Anda harus menggunakan antarmuka yang relevan sebelum Anda dapat mengakses anggota:Contoh penggunaan berlaku ketika Anda secara eksplisit mengimplementasikan anggota antarmuka bahkan jika Anda hanya menggunakan antarmuka tunggal (yang saya selalu lupa: S), jadi saya akan mencoba dan menghindari implementasi eksplisit bila memungkinkan, karena akan menyembunyikan anggota kelas jika mereka ' kembali tidak dilemparkan ke antarmuka yang tepat (yang cukup membingungkan).
sumber
Berdasarkan jawaban Jalayan,
sumber