En Visual Studio, puedo hacer clic derecho en una interfaz y elegir Implementar interfaz, o Implementar interfaz explícitamente.
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(); }
}
}
La única diferencia que veo entre los dos es que el nombre de la interfaz se agrega a las propiedades y métodos de la interfaz cuando se crean si elige Implementar la interfaz explícitamente.
Creo que hace que el código sea un poco más legible ya que puedo ver de dónde proviene ese método / propiedad, sin embargo, ¿esto hace alguna diferencia en cómo se usa o compila la clase? ¿Y realmente importa si implemento mis interfaces implícita o explícitamente?
También hay una diferencia en cómo se llama al método.
Al usar una implementación de interfaz explícita , debe usar el tipo de interfaz para llamar a esa implementación específica.
Entonces, en el código de llamada, necesitaría usar una variable de tipo
ITest
para accederITest.Id
.El artículo Implementación de interfaz explícita (Guía de programación de C #) en MSDN tiene un buen ejemplo.
fuente
Le permite implementar dos interfaces que definen el mismo método. Sin embargo, si implementa explícitamente la interfaz, solo se puede acceder a los métodos cuando la variable se escribe en esa interfaz explícita.
Ver: Tutorial de implementación de interfaz explícita
fuente
EDITAR:
No debería hacer una diferenciaNo debería hacerlo a menos que su clase implemente dos interfaces con las mismas propiedades, ya que tendrá que enviar a la interfaz relevante antes de poder acceder al miembro:El uso de ejemplo se mantiene cuando implementa explícitamente un miembro de la interfaz, incluso si solo usa una única interfaz (que siempre olvido: S), por lo que trataría de evitar la implementación explícita siempre que sea posible, ya que ocultará a los miembros de la clase si ' No se envía a la interfaz correcta (lo cual es bastante confuso).
fuente
Según la respuesta de Jalayan,
fuente