У меня есть следующий код:
// 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 компилируется нормально. Почему между ними есть разница?