Avatar ·

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.