Utilizzo di un numero indeterminato di parametri (confronto tra C# e Java)
Aggiornamento: novembre 2007
C# consente di inviare un numero variabile di parametri a un metodo specificando la parola chiave params quando il metodo viene dichiarato. L'elenco degli argomenti può contenere anche parametri regolari, ma il parametro dichiarato con la parola chiave params deve risultare per ultimo. Il parametro params assume la forma di una matrice a lunghezza variabile. Può esistere un solo parametro di questo tipo per ogni metodo.
Quando tenta di risolvere una chiamata a un metodo, il compilatore esegue la ricerca di un metodo il cui elenco degli argomenti corrisponda al metodo chiamato. Se non viene trovato alcun overload del metodo corrispondente all'elenco degli argomenti, ma viene individuata una versione corrispondente con un parametro params del tipo appropriato, verrà chiamato il metodo trovato e gli argomenti aggiuntivi verranno inseriti in una matrice.
Nell'esempio che segue viene illustrato questo concetto.
class TestParams
{
private static void Average(string title, params int[] values)
{
int sum = 0;
System.Console.Write("Average of {0} (", title);
for (int i = 0; i < values.Length; i++)
{
sum += values[i];
System.Console.Write(values[i] + ", ");
}
System.Console.WriteLine("): {0}", (float)sum/values.Length);
}
static void Main()
{
Average ("List One", 5, 10, 15);
Average ("List Two", 5, 10, 15, 20, 25, 30);
}
}
Nell'esempio precedente il metodo Average viene dichiarato con un parametro params di tipo matrice di valori integer, consentendo di effettuare la chiamata con un numero qualsiasi di argomenti. L'output è il seguente:
Average of List One (5, 10, 15, ): 10
Average of List Two (5, 10, 15, 20, 25, 30, ): 17.5
È possibile specificare un parametro params di tipo Object se si desidera consentire parametri indeterminati di diversi tipi.
Vedere anche
Concetti
Riferimenti
Passaggio di matrici come parametri (Guida per programmatori C#)