2010-01-03 8 views

Répondre

113

Utilisez un tableau de paramètres avec le modificateur params:

public static int AddUp(params int[] values) 
{ 
    int sum = 0; 
    foreach (int value in values) 
    { 
     sum += value; 
    } 
    return sum; 
} 

Si vous voulez vous assurer qu'il ya au moins une valeur (au lieu d'un tableau peut être vide) spécifier alors que séparément:

public static int AddUp(int firstValue, params int[] values) 

(Set sum à firstValue commencer par la mise en œuvre.)

Notez que vous devez également vérifier la référence à un tableau de nullité de la manière normale. Dans la méthode, le paramètre est un tableau parfaitement ordinaire. Le modificateur de tableau de paramètres fait seulement une différence lorsque vous appelez la méthode. Fondamentalement, le compilateur se:

int x = AddUp(4, 5, 6); 

en quelque chose comme:

int[] tmp = new int[] { 4, 5, 6 }; 
int x = AddUp(tmp); 

Vous pouvez appeler avec un tableau tout à fait normal que - si la syntaxe est valide celle-ci dans le code source ainsi.

+0

Magnifique, merci Jon! –

+0

Dans 'public static int AddUp (params int [] valeurs)' les 'values' seront toujours de type' T [] '? Ne peut-il pas être de type 'params IEnumerable values' ou' params List values'. J'ai essayé d'utiliser 'params IEnumerable values' mais cela m'a donné une erreur, qui a été résolue plus tard en utilisant' params IEnumerable [] values'. Pourquoi ça? – barnes

+1

@barnes: 'params' ne fonctionne que pour les types de tableaux (pour le moment, il y a eu des propositions pour autoriser d'autres types). Vous ne voudrez certainement pas * params IEnumerable [] 'car ce serait un tableau de séquences. –

4

C# 4.0 prend également en charge des paramètres optionnels, ce qui pourrait être utile dans d'autres situations. Voir l'article this.

Questions connexes