Я не могу придумать какой-либо действительной технической причины, по которой интерфейсам должны быть определены имена.
Я легко могу увидеть ситуацию, когда имена реализуются автоматически, как вспомогательные элементы для автоматически реализуемых свойств.сегодня.
Однако я думаю, что, вероятно, есть 3 основные причины, почему они были необходимы:
1) Вероятно, было значительно проще реализовать проверку интерфейса в компиляторе, используя те же правила, что иактуальные методы.Поскольку только недавно были введены автоматически реализованные свойства, я подозреваю, что это нетривиальное изменение компилятора.
2) Для тех языков, которые поддерживают автоматическое создание элементов интерфейса в реализующем классе (т. е. VB), вероятно, гораздо проще создать реализацию интерфейса с использованием предварительно определенных имен, чем пытаться создавать имена на лету.
3) Поскольку интерфейс может быть открыт вне определяющего приложения, имена удаляютсянеоднозначность, связанная с плохо определенным интерфейсом.
Например, попытка реализовать метод интерфейса:
void Foo(string, string, int)
, скорее всего, приведет к значительно большей путанице, чем ваш самодокументируемый пример.,Однако это на самом деле скорее проблема юзабилити интерфейса, чем техническая, хотя можно утверждать, что, если интерфейс непригоден для использования, возникает техническая проблема.