Partager via


Utilisez le mot clé params pour les arguments variables

Mise à jour : novembre 2007

TypeName

UseParamsForVariableArguments

CheckId

CA2230

Catégorie

Microsoft.Usage

Modification avec rupture

Oui

Cause

Un type public ou protégé contient une méthode publique ou protégée qui utilise la convention d'appel VarArgs.

Description de la règle

La convention d'appel VarArgs est utilisée avec certaines définitions de méthode qui acceptent un nombre variable de paramètres. Une méthode qui utilise la convention d'appel VarArgs n'est pas conforme CLS et peut ne pas être accessible à l'échelle de plusieurs langages de programmation.

En C#, la convention d'appel VarArgs est utilisée lorsque la liste des paramètres d'une méthode se termine par le mot clé __arglist. Visual Basic ne prend pas en charge la convention d'appel VarArgs, et Visual C++ autorise uniquement son utilisation dans un code non managé qui utilise la notation elliptique ....

Comment corriger les violations

Pour corriger une violation de cette règle en C#, utilisez le mot clé params (Référence C#) au lieu de __arglist.

Quand supprimer les avertissements

Ne supprimez aucun avertissement de cette règle.

Exemple

L'exemple suivant présente deux méthodes ; une qui enfreint la règle et une autre qui la satisfait.

using System;

[assembly: CLSCompliant(true)]
namespace UsageLibrary
{
    public class UseParams 
    {
        // This method violates the rule.
        [CLSCompliant(false)]
        public void VariableArguments(__arglist) 
        { 
            ArgIterator argumentIterator = new ArgIterator(__arglist);
            for(int i = 0; i < argumentIterator.GetRemainingCount(); i++) 
            { 
                Console.WriteLine(
                    __refvalue(argumentIterator.GetNextArg(), string));
            } 
        }

        // This method satisfies the rule.
        public void VariableArguments(params string[] wordList)
        { 
            for(int i = 0; i < wordList.Length; i++) 
            { 
                Console.WriteLine(wordList[i]);
            } 
        }
    }
}

Voir aussi

Concepts

Spécification CLS (Common Language Specification)

Référence

System.Reflection.CallingConventions