Скажем, у меня есть следующий код:
Код: Выделить всё
public interface IInterface
{
void Method();
}
public class Base : IInterface
{
virtual void IInterface.Method()
{
throw new NotImplementedException();
}
}
Код: Выделить всё
public class Derived : IInterface
{
void IInterface.Method()
{
throw new NotImplementedException();
}
}
Обновление:
В соответствии со спецификацией C# (часть: 20.4.1 Явные реализации элементов интерфейса) существуют 2 причины.
- Скрытие определенных методов (для чего я его использую).
- Наличие двух функций с одинаковой сигнатурой, но разными типами возвращаемого значения
(полезно, например, для IClonable).
Обновление 2:
Учитывая ответы, я думаю, мне следует перефразировать настоящий вопрос. Если две вышеуказанные причины являются причиной того, что явная реализация интерфейсов стала возможной в первую очередь. Почему это будет проблемой, если вы сделаете метод виртуальным?
Подробнее здесь: https://stackoverflow.com/questions/709 ... be-virtual