C # prend-il en charge un nombre variable d'arguments?
Si oui, comment C # prend-il en charge la variable no d'arguments?
Quels sont les exemples?
Comment les arguments variables sont-ils utiles?
EDIT 1: Quelles sont les restrictions à ce sujet?
EDIT 2: La question ne concerne pas les paramètres optionnels mais les paramètres variables
Oui. L'exemple classique serait le params object[] args
:
//Allows to pass in any number and types of parameters
public static void Program(params object[] args)
Un cas d'utilisation typique serait de passer des paramètres dans un environnement de ligne de commande à un programme, où vous les transmettez sous forme de chaînes. Le programme doit ensuite les valider et les affecter correctement.
Restrictions:
params
est autorisé par méthodeEDIT: Après avoir lu vos modifications, j'ai fait les miennes. La partie ci-dessous couvre également les méthodes pour atteindre un nombre variable d'arguments, mais je pense que vous cherchiez vraiment la méthode params
.
Une des méthodes les plus classiques est également appelée surcharge de méthode . Vous les avez probablement déjà beaucoup utilisées:
//both methods have the same name and depending on wether you pass in a parameter
//or not, the first or the second is used.
public static void SayHello() {
Console.WriteLine("Hello");
}
public static void SayHello(string message) {
Console.WriteLine(message);
}
Dernier point mais non des moindres: Arguments facultatifs
//this time we specify a default value for the parameter message
//you now can call both, the method with parameter and the method without.
public static void SayHello(string message = "Hello") {
Console.WriteLine(message);
}
C # prend en charge les tableaux de paramètres de longueur variable à l'aide du mot clé params
.
Voici un exemple.
public static void UseParams(params int[] list)
{
for (int i = 0; i < list.Length; i++)
{
Console.Write(list[i] + " ");
}
Console.WriteLine();
}
Il y a plus d'informations ici .
Oui, params :
public void SomeMethod(params object[] args)
params doit être le dernier argument et peut être de n'importe quel type. Je ne sais pas s'il doit s'agir d'un tableau ou simplement d'un IEnumerable.
Je suppose que vous voulez dire un nombre variable de paramètres de méthode . Si c'est le cas:
void DoSomething(params double[] parms)
(Ou mélangé avec des paramètres fixes)
void DoSomething(string param1, int param2, params double[] otherParams)
Restrictions:
C'est tout ce à quoi je peux penser en ce moment même s'il pourrait y en avoir d'autres. Pour plus d'information, regardez la documentation.