Страницы

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

пятница, 29 ноября 2019 г.

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

#c_sharp #net #интерфейс


У меня имеется класс, определенный ниже

class SomeType
    : IDisposable
{
    public void Dispose() { Console.WriteLine("Dispose class"); }
    void IDisposable.Dispose() { Console.WriteLine("Dispose interface"); }
}


Почему этот код компилируется? Разве у нас фактически не объявлено два одинаковых
метода с одинаковой сигнатурой?
    


Ответы

Ответ 1



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

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

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