tengo un método que utiliza la palabra clave params
, así:¿Por qué pasar null a un método params da como resultado una matriz de parámetro nulo?
private void ParamsMethod(params string[] args)
{
// Etc...
}
Entonces, llame al método usando varias combinaciones de argumentos:
// Within the method, args is...
ParamsMethod(); // - a string array with no elements
ParamsMethod(null); // - null (Why is this?)
ParamsMethod((string)null); // - a string array with one element: null
ParamsMethod(null, null); // - a string array with two elements: null and null
ParamsMethod("s1"); // - a string array with one element: "s1"
ParamsMethod("s1", "s2"); // - a string array with two elements: "s1" and "s2"
entiendo todos los casos, a excepción de el segundo. ¿Puede alguien explicar por qué ParamsMethod(null)
hace que args
sea null
, en lugar de una matriz con un elemento nulo?
Ahora que ya conoce la respuesta, puede trabajar en este rompecabezas. Tiene dos métodos, 'void M (object) {}' y 'void M (params object []) {}'. Llamas a 'M (nulo)'.¿Qué sobrecarga se elige, qué se le pasa y por qué? –
He encontrado esto antes. Creo que acaba de renombrar uno de los métodos. :) – FishBasketGordo