Nie mogę myśleć o jakiejkolwiek uzasadnionej przyczyny technicznej interfejsy mieć nazwy zdefiniowane.
Mogę łatwo zobaczyć sytuację, w której nazwy są automatycznie wdrażane, podobnie jak członkowie wspierający automatycznie wprowadzane właściwości.
Myślę jednak, że prawdopodobnie istnieją 3 główne powody, dla których zostały one potrzebne:
1) To był prawdopodobnie znacznie łatwiejsze do wdrożenia walidacji interfejsu w kompilatora przy użyciu tych samych zasad jak rzeczywistych metod. Ponieważ dopiero stosunkowo niedawno wprowadzono właściwości automatycznie implementowane, podejrzewam, że jest to niebanalna zmiana kompilatora.
2) W przypadku języków, które obsługują automatyczne tworzenie elementów interfejsu w klasie implementacji (np. VB), prawdopodobnie łatwiej jest utworzyć implementację interfejsu przy użyciu wstępnie zdefiniowanych nazw niż próba utworzenia nazw w locie .
3) Ponieważ interfejs może być odsłonięty poza aplikacją definiującą, nazwy usuwają niejednoznaczność powiązaną ze źle zdefiniowanym interfejsem.
Na przykład, próbując wdrożyć metody interfejsu:
void Foo(string, string, int)
najprawdopodobniej doprowadzi do znacznie więcej zamieszania niż samodokumentujące przykład. Jest to jednak raczej problem z użytecznością interfejsu niż techniczna, chociaż można argumentować, że jeśli interfejs nie nadaje się do użytku, istnieje podstawowy problem techniczny.
Myślę, która stałaby nazwy sygnatur metoda zgodny!!! –
Zobacz mój zredagowany ostatni komentarz. –
co mam na myśli to, że deklaracje metod są spójne między klasami i interfejsami ... –