utilizzare un array parametro con la params
modificatore:
public static int AddUp(params int[] values)
{
int sum = 0;
foreach (int value in values)
{
sum += value;
}
return sum;
}
Se si vuole fare in modo che ci sia almeno uno valore (piuttosto che una matrice può essere vuoto) quindi specificare che separatamente:
public static int AddUp(int firstValue, params int[] values)
(Impostare sum
a firstValue
per iniziare con l'implementazione.)
Si noti che è necessario controllare il riferimento dell'array per nullità nel modo normale. All'interno del metodo, il parametro è un array perfettamente ordinario. Il modificatore della serie di parametri fa la differenza quando si chiama il metodo. Fondamentalmente il compilatore trasforma:
int x = AddUp(4, 5, 6);
in qualcosa di simile:
int[] tmp = new int[] { 4, 5, 6 };
int x = AddUp(tmp);
È possibile chiama con un allineamento perfettamente normale anche se - in modo da quest'ultimo sintassi è valida nel codice sorgente pure.
fonte
2010-01-03 21:39:29
Bello, grazie Jon! –
In 'public static int AddUp (parametri int [] valori)' i 'valori' saranno sempre di tipo' T [] '? Non può essere di tipo 'params IEnumerable values' o' params List values'. Ho provato a usare i valori di 'params IEnumerable ' ma mi ha dato un errore, che è stato successivamente risolto usando' params IEnumerable [] values'. Perchè così? –
barnes
@barnes: 'params' funziona solo per i tipi di array (al momento ci sono state proposte per consentire altri tipi). Quasi certamente * non * vuoi 'params IEnumerable []' in quanto sarebbe un array di sequenze. –