CA2230: params für Variablenargumente verwenden
TypeName |
UseParamsForVariableArguments |
CheckId |
CA2230 |
Kategorie |
Microsoft.Usage |
Unterbrechende Änderung |
Breaking |
Ursache
Ein öffentlicher oder geschützter Typ enthält eine öffentliche oder geschützte Methode, die die VarArgs-Aufrufkonvention verwendet.
Regelbeschreibung
Die VarArgs-Aufrufkonvention wird in bestimmten Methodendefinitionen verwendet, die eine variable Anzahl von Parametern übernehmen. Methoden, die die VarArgs-Aufrufkonvention verwenden, sind nicht CLS-kompatibel, und möglicherweise kann nicht in allen Programmiersprachen darauf zugegriffen werden.
In C# wird die VarArgs-Aufrufkonvention verwendet, wenn die Parameterliste einer Methode mit dem __arglist-Schlüsselwort endet. Visual Basic unterstützt die VarArgs-Aufrufkonvention nicht, und Visual C++ lässt ihre Verwendung nur in nicht verwaltetem Code zu, in dem die Auslassungsnotation ... verwendet wird.
Behandeln von Verstößen
Um einen Verstoß dieser Regel in C# zu beheben, verwenden Sie statt __arglist das params (C#-Referenz)-Schlüsselwort.
Wann sollten Warnungen unterdrückt werden?
Unterdrücken Sie keine Warnung dieser Regel.
Beispiel
Im folgenden Beispiel werden zwei Methoden veranschaulicht: eine Methode, die gegen die Regel verstößt, und eine Regel, die der Regel entspricht.
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]);
}
}
}
}
Siehe auch
Referenz
System.Reflection.CallingConventions