c# interface question

У меня есть следующий код:

// IMyInterface.cs

namespace InterfaceNamespace
{
    interface IMyInterface
    {
        void MethodToImplement();
    }
}

.

// InterfaceImplementer.cs
class InterfaceImplementer : IMyInterface
{
    void IMyInterface.MethodToImplement()
    {
        Console.WriteLine("MethodToImplement() called.");
    }
}

Этот код отлично компилируется (почему?) . Однако когда я пытаюсь его использовать:

// Main.cs

    static void Main()
    {
        InterfaceImplementer iImp = new InterfaceImplementer();
        iImp.MethodToImplement();
    }

Я получаю:

 InterfaceImplementer не содержит определения для 'MethodToImplement'

т.е. MethodToImplement не виден снаружи. Но если я сделаю следующие изменения:

// InterfaceImplementer.cs
class InterfaceImplementer : IMyInterface
{

    public void MethodToImplement()
    {
        Console.WriteLine("MethodToImplement() called.");
    }
}

Тогда и Main.cs компилируется нормально. Почему между ними есть разница?

7
задан H.B. 18 May 2011 в 11:52
поделиться