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