implementação de interface explícita, por que a conversão explícita

Quando uma classe implementa explicitamente uma interface, por que você precisaexplicitamente converter a instância da classe para interface para usar o método implementado?

(Este exemplo é tirado daqui:MSDN: Implementação Explícita de Interface)

Você tem duas interfaces da seguinte maneira.

interface IControl
{
    void Paint();
}
interface ISurface
{
    void Paint();
}

E você os implementa explicitamente.

public class SampleClass : IControl, ISurface
{
    void IControl.Paint()
    {
        System.Console.WriteLine("IControl.Paint");
    }
    void ISurface.Paint()
    {
        System.Console.WriteLine("ISurface.Paint");
    }
}

Agora, para usar as interfaces, você tem o seguinte código.

// Call the Paint methods from Main.

SampleClass obj = new SampleClass();
//obj.Paint();  // Compiler error.

IControl c = (IControl)obj;
c.Paint();  // Calls IControl.Paint on SampleClass.

ISurface s = (ISurface)obj;
s.Paint(); // Calls ISurface.Paint on SampleClass. 

No bloco de código acima, por que você tem

IControl c = (IControl)obj;

ao contrário de

IControl c = obj;

?

O motivo da minha confusão é porque, por exemplo, você pode fazer o seguinte

IDictionary<string, string> c = new Dictionary<string, string>();

sem explicitamente lançarnew Dictionary paraIDictionary.

Obrigado.

questionAnswers(2)

yourAnswerToTheQuestion