Страницы

Поиск по вопросам

четверг, 4 октября 2018 г.

Определение методов класса с одинаковой сигнатурой

У меня имеется класс, определенный ниже
class SomeType : IDisposable { public void Dispose() { Console.WriteLine("Dispose class"); } void IDisposable.Dispose() { Console.WriteLine("Dispose interface"); } }
Почему этот код компилируется? Разве у нас фактически не объявлено два одинаковых метода с одинаковой сигнатурой?


Ответ

Второй метод является явной реализацией интерфейса, так что все нормально. Он будет вызван только при явном приведении типа SomeType к IDisposable, тогда как первый метод будет вызываться при работе напрямую с SomeType

Комментариев нет:

Отправить комментарий