static void Main(string[] args)
{
SetError("A");
SetError("X", "Y");
SetError("M", "N", "O");
SetError("G", null);
SetError("R", null, "S");
Console.ReadLine();
}
static void SetError(string message, params object[] data)
{
Console.WriteLine("Message=" + message);
}
static void SetError(string code, string message, params object[] data)
{
Console.WriteLine("Code=" + code + "; Message=" + message);
}
Qual dos métodos será chamado em cada invocação?Só a primeira chamada invoca o primeiro método, a segunda, terceira e quinta invocam o 2 método e a quarta dá erro de compilação porque a chamada é ambígua. Isto leva-me a dizer que a assinatura do primeiro método foi mal pensada, não devendo ter o segundo parâmetro, visto que uma chamada com dois ou mais parâmetros, vai invocar o segundo método ou no caso da quarta chamada ainda é pior provocando um erro de compilação.
Sem comentários:
Enviar um comentário