Ho un metodo che utilizza la parola chiave params
, in questo modo:Perché il passaggio di null a un metodo params genera un array di parametri nullo?
private void ParamsMethod(params string[] args)
{
// Etc...
}
Poi, ho chiamare il metodo utilizzando varie combinazioni di argomenti:
// 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"
capisco tutti i casi, tranne che per il secondo. Qualcuno può spiegare perché ParamsMethod(null)
fa sì che args
sia null
, invece di un array con un elemento nullo?
Ora che conosci la risposta, puoi lavorare su questo puzzle. Hai due metodi, 'void M (object) {}' e 'void M (params object []) {}'. Si chiama 'M (null)'.Quale sovraccarico viene scelto, cosa gli viene passato e perché? –
L'ho già incontrato prima. Penso che sia appena stato ribattezzato uno dei metodi. :) – FishBasketGordo