Я работал со многими языками, которые не генерируют сигнатуру метода на основе возвращаемого типа. Я также работал с одним (может быть, с некоторыми), которые делают. Те, которые не доставляли мне проблем в прошлом (как здесь ). Почему языки программирования генерируют сигнатуры методов независимо от типа возвращаемого значения?
Обновление: я имею в виду специально скомпилированные статически типизированные языки
programming-languages
Чарльз Ламберт
источник
источник
Ответы:
Это плохо сочеталось бы с типизацией и иерархиями типов. Если у вас есть две версии метода, одна из которых возвращает тип A, а другая - тип B, у вас возникают проблемы, когда:
Вы можете обойти это с помощью приведения, но это потребует столько же ввода, сколько и переименование одной из функций. Вы также можете зарегистрировать ошибку компилятора, когда вызов неоднозначен, и в этом случае пользователю необходимо потратить аналогичные усилия.
источник
Потому что вы можете вызывать метод, а не назначать его результат.
источник
Практическое правило: строго типизированные языки обычно связывают сигнатуру метода с возвращаемым типом. Слабо типизированных языков нет.
Я не знаю C #, но я предполагаю, что проблема может быть в том, как C # обрабатывает дженерики. Это может быть создание совершенно другого метода для универсального, в этом случае это действительно два разных метода.
источник