В Visual Studio я могу щелкнуть правой кнопкой мыши по интерфейсу и выбрать «Реализовать интерфейс» или «Явно реализовать интерфейс».
public class Test : ITest
{
public string Id // Generated by Implement Interface
{
get { throw new NotImplementedException(); }
}
string ITest.Id // Generated by Implement Interface Explicitly
{
get { throw new NotImplementedException(); }
}
}
Единственное различие, которое я вижу между ними, заключается в том, что имя интерфейса добавляется к свойствам и методам интерфейса при их создании, если вы решите явно реализовать интерфейс.
Я нахожу, что это делает код немного более читабельным, так как я могу видеть, откуда взялся этот метод / свойство, однако имеет ли это какое-либо значение в том, как класс используется или компилируется? И действительно ли имеет значение, реализую ли я свои интерфейсы неявно или явно?
Существует также разница в том, как вы вызываете метод.
При использовании явной реализации интерфейса вы должны использовать тип интерфейса для вызова этой конкретной реализации.
Таким образом, при вызове кода вам нужно будет использовать переменную типа
ITest
для доступаITest.Id
.Хорошим примером является статья « Явная реализация интерфейса» (Руководство по программированию в C #) на MSDN.
источник
Это позволяет вам реализовать два интерфейса, которые определяют один и тот же метод. Однако, если вы явно реализуете интерфейс, доступ к методам возможен только тогда, когда переменная введена в этот явный интерфейс.
См. Явное Учебное пособие по Реализации Интерфейса
источник
РЕДАКТИРОВАТЬ:
Это не должно иметь значенияВы не должны делать это, если ваш класс не реализует два интерфейса с одинаковыми свойствами, так как вам придется привести к соответствующему интерфейсу, прежде чем вы сможете получить доступ к члену:Пример использования имеет место, когда вы явно реализуете элемент интерфейса, даже если вы используете только один интерфейс (который я всегда забываю: S), поэтому я постараюсь избегать явной реализации, когда это возможно, поскольку она будет скрывать членов класса, если они ' не приводить к правильному интерфейсу (что довольно запутанно).
источник
Основываясь на ответе Джалаяна,
источник