372 votes

Pourquoi utiliser le mot clé params ?

Je sais que c’est une question fondamentale, mais je ne pouvais pas trouver une réponse.

Pourquoi l’utiliser ? Si vous écrivez une fonction ou une méthode qui est de l’utiliser, lorsque vous le retirez le code fonctionne toujours parfaitement, 100 % car sans elle.

Avec params :

Sans paramètres :

528voto

Konrad Rudolph Points 231505

Avec params vous pouvez appeler votre méthode comme ceci:

 addTwoEach(1, 2, 3, 4, 5);
 

Sans params , vous ne pouvez pas.

De plus, vous pouvez appeler la méthode avec un tableau en tant que paramètre dans les deux cas :

 addTwoEach(new int[] { 1, 2, 3, 4, 5 });
 

C'est-à-dire, params vous permet d'utiliser un raccourci lors de l'appel de la méthode.

Sans lien, vous pouvez raccourcir radicalement votre méthode:

 public static int addTwoEach(params int[] args)
{
    return args.Sum() + 2 * args.Length;
}
 

105voto

Praetor12 Points 1410

L'utilisation de params vous permet d'appeler la fonction sans arguments. Sans params :

 static public int addTwoEach(int[] args)
    {
        int sum = 0;

        foreach (var item in args)
        {
            sum += item + 2;
        }

        return sum;
    }

addtwoEach(); // throws an error
 

Comparez avec params :

 static public int addTwoEach(params int[] args)
    {
        int sum = 0;

        foreach (var item in args)
        {
            sum += item + 2;
        }

        return sum;
    }

addtwoEach(); // returns 0
 

En règle générale, vous pouvez utiliser des paramètres lorsque le nombre d'arguments peut varier de 0 à l'infini et utiliser un tableau lorsque les nombres d'arguments varient de 1 à l'infini.

23voto

okrumnow Points 1517

Il vous permet d'ajouter autant de paramètres de type de base dans votre appel que vous le souhaitez.

 addTwoEach(10, 2, 4, 6)
 

alors qu'avec le second formulaire, vous devez utiliser un tableau comme paramètre

 addTwoEach(new int[] {10,2,4,6})
 

5voto

params vous permet également d'appeler la méthode avec un seul argument.

 private static int Foo(params int[] args) {
    int retVal = 0;
    Array.ForEach(args, (i) => retVal += i);
    return retVal;
}
 

c'est-à-dire Foo(1); au lieu de Foo(new int[] { 1 }); . Peut être utile pour les raccourcis dans les scénarios où vous pourriez avoir besoin de transmettre une valeur unique plutôt qu'un tableau entier. Il est toujours traité de la même manière dans la méthode, mais donne un peu de bonbons pour appeler de cette façon.

3voto

me how Points 15922

L' params mot-clé spécifie un spécial paramètre d'une fonction. Il doit toujours être le dernier paramètre dans la définition de la fonction. Il est aussi appelé un tableau de paramètres. Les tableaux de paramètres vous permettent d'appeler à l'aide d'une quantité variable de paramètres.

Les tableaux de paramètres peuvent être un moyen utile pour simplifier votre code parce que vous n'avez pas à passer des tableaux à partir de votre code d'appel. Au lieu de cela, vous passez plusieurs arguments du même type, qui sont placées dans un tableau, vous pouvez utiliser à partir de votre fonction.

Le code suivant est nécessaire de définir une fonction qui utilise un tableau de paramètres:

<access> <returnType> <FunctionName>(<par1Type> <par1Name>, ... , params <type>[] <name>)
{
   ... 
   return <returnValue>
}

Et c'est de cette façon, vous pouvez appeler cette fonction

<FunctionName>(<par1>, ..., <val1>, <val2>, ...)

<val1> et <val2> et ainsi de suite doivent être des valeurs de même type. Vous pouvez avoir à peu près autant que vous le souhaitez ou aucun. Ils sont utilisés pour initialiser le tableau.

Les tableaux de paramètres sont utiles lorsque vous avez besoin de spécifier des paramètres supplémentaires pour votre fonction.

Supposons que vous disposez d'une fonction GetWord() qui prend un String paramètre et renvoie le premier mot du paramètre.

String firstWord = GetWord("This is a sentence.");

l' firstWord variable qui serait attribué à Cordes "This"

Que faire si vous voulez retourner la un mot spécifique dans le paramètre? Vous ajoutez params paramètre GetWord() fonction. C'est facultatif mais permet le retour de n'importe quel mot par son index(s'il en existe, mais c'est la fonction de traitement - pour cet exemple, supposons index commence à 1).

String aWord = GetWord("This is a sentence.", 2)

entraînerait aword = "is"

Maintenant, vous pouvez ajouter une autre option pour limiter le nombre de caractères que vous souhaitez renvoyer de la parole.

String partOfWord = GetWord("This is a sentence.", 4, 5)

partOfWord seraient affectés à seulement 5 caractères à partir de la gauche de la 4e mot » "sente

Si la différence est que vous n'avez pas à passer un tableau de vous code appelant. C'est facultatif mais permet de travailler avec les paramètres à l'intérieur de la fonction sur le dessus de tous les paramètres requis.

C'est en quelque sorte une alternative de VB du mot-clé Facultatif.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X