Por que dois métodos não podem ser declarados com a mesma assinatura, mesmo que seus tipos de retorno sejam diferentes? [duplicado
Duplicad: Sobrecarga de função por tipo de retorno?
alvez essa seja uma pergunta muito boba, mas não entendo por que não posso declarar dois métodos com a mesma assinatura quando eles têm tipos de retorno diferente
public class MyClass
{
private double d = 0;
public double MyMethod()
{
return d;
}
public string MyMethod()
{
return d.ToString();
}
}
Eu recebo um erro de compilação que afirma que a classe já define um membro com os mesmos tipos de parâmetr
(Obviamente, a maneira como estou usando isso no meu código não é tão simples quanto o meu código de exemplo ... mas acho que isso dá a ideia.)
Estou sentindo falta de algo relacionado ao design de OO que torna o que estou tentando fazer um anti-padrão de OOP? Certamente, o compilador deve ser capaz de determinar qual método eu estou tentando usar, desde que eu diga especificamente qual eu quer
GivenMyClass myClass = new MyClass();
Espero que o seguinte código funcione:
double d = myClass.MyMethod();
string s = myClass.MyMethod();
Espero que o seguinte código tenha problemas:
var v = myClass.MyMethod();
Mas mesmo no caso devar
deve resultar em um erro de compilaçã
Alguém pode ver o que estou fazendo de errado aqui? Estou mais do que feliz por ser corrigido. : -)