Implementación implícita y explícita de interfaces en C#: ¿cuándo y cuál usar?
¡Hola a todos! Acabo de empezar a aprender C# y me topé con el tema de interfaces. Parece todo claro: una interface es un contrato, una clase lo implementa. Pero vi que las interfaces se pueden implementar de dos maneras: implícita (implicit) y explícitamente (explicit). Y me confundí.
Aquí hay un ejemplo:
public interface IWorker
{
void Work();
}
public class Employee : IWorker
{
// Implementación implícita
public void Work()
{
Console.WriteLine("Employee works");
}
}
Todo funciona. Pero leí que también se puede hacer así:
public class Manager : IWorker
{
// Implementación explícita
void IWorker.Work()
{
Console.WriteLine("Manager works");
}
}
Y ahora, si escribo:
Manager m = new Manager();
m.Work(); // ¡Error de compilación!
¡Esto no compila! ¿Para qué sirve entonces la implementación explícita? ¿Cuándo usarla? ¿Y cuál es la diferencia, aparte de la sintaxis? Agradecería una explicación detallada.