Почему Явная Реализация Интерфейса не может быть общедоступной?

Проще говоря, IDE предлагает дополнительные экономящие время функции по простому редактору.

70
задан Prashant Cholachagudda 10 August 2009 в 05:46
поделиться

2 ответа

Причина явной реализации интерфейса состоит в том, чтобы избежать конфликтов имен, в результате чего объект должен быть явно приведен к этому интерфейсу перед вызовом этих методов.

Вы можете думать об этих методах не как о публичных в классе, но будучи привязанным непосредственно к интерфейсу. Нет причин указывать общедоступный / частный / защищенный, поскольку он всегда будет общедоступным, поскольку интерфейсы не могут иметь закрытых членов.

(Microsoft имеет обзор явной реализации интерфейса )

67
ответ дан 24 November 2019 в 13:29
поделиться

Явная реализация члена позволяет устранять неоднозначность члены интерфейса с одинаковой сигнатурой.

Без явных реализаций члена интерфейса было бы невозможно для класса или структуры иметь разные реализации членов интерфейса с той же сигнатурой и возвращаемым типом.

Почему явная реализация интерфейса может не быть публичным? Когда член реализован явно, к нему нельзя получить доступ через экземпляр класса, а только через экземпляр интерфейса.

public interface IPrinter
{
   void Print();
}
public interface IScreen
{
   void Print();
}

public class Document : IScreen,IPrinter
{
    void IScreen.Print() { ...}
    void IPrinter.Print() { ...} 
}

.....
Document d=new Document();
IScreen i=d;
IPrinter p=d;
i.Print();
p.Print();
.....

Явные реализации члена интерфейса недоступны через экземпляры класса или структуры.

27
ответ дан 24 November 2019 в 13:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: