Implementação implícita e explícita de interfaces em C#: quando e qual usar?
Olá a todos! Comecei a estudar C# recentemente e me deparei com o tópico de interfaces. Até aí tudo bem: uma interface é um contrato, e a classe a implementa. Mas então vi que as interfaces podem ser implementadas de duas maneiras: implícita (implicit) e explícita (explicit). E fiquei confuso.
Aqui está um exemplo:
public interface IWorker
{
void Work();
}
public class Employee : IWorker
{
// Implementação implícita
public void Work()
{
Console.WriteLine("Employee works");
}
}
Funciona perfeitamente. Mas li que também pode ser feito assim:
public class Manager : IWorker
{
// Implementação explícita
void IWorker.Work()
{
Console.WriteLine("Manager works");
}
}
E agora, se eu escrever:
Manager m = new Manager();
m.Work(); // Erro de compilação!
Isso não compila! Para que serve então a implementação explícita? Quando usá-la? E qual é a diferença, além da sintaxe? Agradeço por uma explicação detalhada.