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. : -)

questionAnswers(5)

yourAnswerToTheQuestion