Eu trabalhei com muitos idiomas que não geram uma assinatura de método com base no tipo de retorno. Eu também trabalhei com um (talvez alguns?) Que o faça. Os que não me deram problemas no passado (como aqui ). Por que as linguagens de programação geram assinaturas de método sem levar em consideração o tipo de retorno?
Atualização: estou me referindo especificamente a idiomas compilados estaticamente
programming-languages
Charles Lambert
fonte
fonte
Respostas:
Não combinaria bem com a conversão de tipos e hierarquias de tipos. Se você possui duas versões de um método, uma das quais retorna o tipo A e a outra, o tipo B, você enfrenta problemas quando:
Você poderia contornar isso com projeções, mas isso exigiria tanto digitação quanto renomear uma das funções. Você também pode registrar um erro do compilador quando a chamada for ambígua; nesse caso, o usuário precisará gastar esforços semelhantes.
fonte
Porque você pode chamar um método e não atribuir seu resultado.
fonte
Regra geral: linguagens fortemente tipadas geralmente vinculam a assinatura do método a um tipo de retorno. Idiomas de tipo fraco não.
Não conheço C #, mas presumo que o problema possa ser devido à maneira como o C # lida com genéricos. Pode estar criando um método totalmente diferente para o genérico; nesse caso, eles são realmente dois métodos diferentes.
fonte