| TypeName | UseParamsForVariableArguments |
| CheckId | CA2230 |
| Catégorie | Microsoft.Usage |
| Modification avec rupture | Oui |
Un type public ou protégé contient une méthode publique ou protégée qui utilise la convention d'appel VarArgs.
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 exclure des avertissements
N'excluez aucun avertissement à partir de cette règle.
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]);
}
}
}
}
Référence
System.Reflection.CallingConventions
Concepts
Spécification CLS (Common Language Specification)