CA2230: Utilizzare params per argomenti variabili
TypeName |
UseParamsForVariableArguments |
CheckId |
CA2230 |
Category |
Microsoft.Usage |
Breaking Change |
Breaking |
Causa
Un tipo pubblico o protetto contiene un metodo pubblico o protetto che utilizza la convenzione di chiamata VarArgs.
Descrizione della regola
La convenzione di chiamata VarArgs viene utilizzata con determinate definizioni di metodi che accettano un numero variabile di parametri.Un metodo che utilizza la convezione di chiamata VarArgs non è conforme a CLS (Common Language Specification) e potrebbe non essere accessibile tra i diversi linguaggi di programmazione.
In C#, la convenzione di chiamata VarArgs viene utilizzata quando l'elenco di parametri di un metodo termina con la parola chiave __arglist.In Visual Basic la convenzione di chiamata VarArgs non è supportata e Visual C++ ne consente l'utilizzo solo nel codice non gestito che utilizza la notazione dei puntini di sospensione ....
Come correggere le violazioni
Per correggere una violazione di questa regola in C#, utilizzare la parola chiave params (Riferimenti per C#) anziché __arglist.
Esclusione di avvisi
Non escludere un avviso da questa regola.
Esempio
Nell'esempio riportato di seguito vengono illustrati due metodi, uno che viola la regola e uno che la soddisfa.
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]);
}
}
}
}
Vedere anche
Riferimenti
System.Reflection.CallingConventions