Pracowałem z wieloma językami, które nie generują podpisu metody na podstawie typu zwrotu. Pracowałem również z jednym (może niektórym?), Który działa. Te, które nie sprawiały mi problemów w przeszłości (jak tutaj ). Dlaczego języki programowania generują podpisy metod bez względu na typ zwracanego kodu?
Aktualizacja: Mam na myśli szczególnie skompilowane języki o typie statycznym
programming-languages
Charles Lambert
źródło
źródło
Odpowiedzi:
Nie pasowałby dobrze do hierarchii rzutowania i typów. Jeśli masz dwie wersje metody, z których jedna zwraca typ A, a druga zwraca typ B, masz problemy, gdy:
Można to obejść za pomocą rzutów, ale wymagałoby to tyle samo pisania, co zmiana nazwy jednej z funkcji. Można również zarejestrować błąd kompilatora, gdy wywołanie jest niejednoznaczne, w którym to przypadku użytkownik musi poświęcić podobny wysiłek.
źródło
Ponieważ możesz wywołać metodę i nie przypisywać jej wyniku.
źródło
Ogólna zasada: silnie pisane języki zazwyczaj wiążą podpis metody z typem zwracanym. Słabo wpisane języki nie.
Nie znam C #, ale zakładam, że problem może wynikać ze sposobu, w jaki C # obsługuje generyczne. Może to być zupełnie inna metoda dla ogólnej, w takim przypadku są to naprawdę dwie różne metody.
źródło