web-dev-qa-db-fra.com

Passer plusieurs paramètres facultatifs à une fonction C #

Existe-t-il un moyen de configurer une fonction C # pour accepter un nombre quelconque de paramètres? Par exemple, pourriez-vous configurer une fonction telle que tout ce qui suit fonctionne - 

x = AddUp(2, 3)

x = AddUp(5, 7, 8, 2)

x = AddUp(43, 545, 23, 656, 23, 64, 234, 44)
54
Craig Schwarze

Utilisez un tableau paramètre 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 y a au moins one valeur (plutôt qu'un tableau éventuellement vide), spécifiez cela séparément:

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

(Définissez sum sur firstValue pour commencer dans l'implémentation.)

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

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

dans quelque chose comme:

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

Cependant, vous pouvez l'appeler avec un tableau parfaitement normal - cette dernière syntaxe est également valable dans le code source.

131
Jon Skeet

C # 4.0 prend également en charge les paramètres facultatifs, qui pourraient être utiles dans d'autres situations. Voir ceci article. 

5
Tarydon

1.Vous pouvez créer des fonctions de surcharge. 

SomeF(strin s){}   
SomeF(string s, string s2){}    
SomeF(string s1, string s2, string s3){}   

Plus d'infos: http://csharpindepth.com/Articles/General/Overloading.aspx

2.ou vous pouvez créer une fonction avec params

SomeF( params string[] paramArray){}
SomeF("aa","bb", "cc", "dd", "ff"); // pass as many as you like

Plus d'infos: https://docs.Microsoft.com/en-us/dotnet/csharp/language-reference/keywords/params

3.ou vous pouvez utiliser un tableau simple

Main(string[] args){}
0
Pit J