permite - sobrecargas de metodos c#
Método de sobrecarga con parámetro opcional (3)
El uso de argumentos con nombre y opcionales afecta la resolución de sobrecarga:
Si dos candidatos se consideran igualmente buenos, la preferencia es para un candidato que no tiene parámetros opcionales para los cuales se omitieron los argumentos en la convocatoria. Esto es consecuencia de una preferencia general en la resolución de sobrecarga para los candidatos que tienen menos parámetros.
Referencia: MSDN
Implicando el método de regla anterior con 2 parámetros, se llamará la string x(string a,string b)
.
Nota: Si ambos métodos sobrecargados tienen parámetros opcionales, el compilador dará un error de ambigüedad en tiempo de compilación.
Tengo una clase de la siguiente manera con dos métodos de sobrecarga.
Class A
{
public string x(string a, string b)
{
return "hello" + a + b;
}
public string x(string a, string b, string c = "bye")
{
return c + a + b;
}
}
Si llamo al método x
desde otra clase con dos parámetros, ¿qué método se va a ejecutar y por qué? es decir,
string result = new A().x("Fname", "Lname");
He probado esto en mi aplicación de consola y se ejecuta el método con 2 parámetros. ¿Alguien puede explicar esto?
Si llama al Método con dos Parámetros, usa el Método con dos Parámetros. Si llamas al uno con tres, usará el otro.
Siempre ejecutará el método que primero coincida con el número exacto de parámetros , en su caso se ejecutará:
La prioridad del método de parámetro opcional es menor que la función con el número exacto de parámetros
public string x(string a, string b);