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

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

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