CA2230: Użyj parametrów dla zmiennych argumentów
TypeName |
UseParamsForVariableArguments |
CheckId |
CA2230 |
Kategoria |
Microsoft.Usage |
Zmiana kluczowa |
Kluczowa |
Przyczyna
Typ publiczny lub chroniony zawiera metodę publiczną lub chronioną, która używa konwencji wywoływania VarArgs.
Opis reguły
Konwencja wywołania VarArgs jest używana w konkretnych definicjach metody, która przyjmuje zmienną liczbę parametrów.Metoda, używająca konwencji wywołania VarArgs nie jest zgodna z Common Language Specification (CLS) i może nie być dostępna pomiędzy językami programowania.
W języku C#, konwencja wywoływania VarArgs jest używana, kiedy lista parametrów metody kończy się słowem kluczowym __arglist.Język Visual Basic nie obsługuje konwencji wywoływania VarArgs i Visual C++ umożliwia jej użycie tylko w kodzie niezarządzanym, który używa notacji wielokropka ....
Jak naprawić naruszenia
Aby naprawić naruszenie tej reguły w języku C#, należy użyć słowa kluczowego params (odwołanie w C#) zamiast __arglist.
Kiedy pominąć ostrzeżenia
Nie należy pomijać ostrzeżenia dotyczącego tej reguły.
Przykład
Poniższy przykład ilustruje dwie metody, jedną która narusza tą regułę oraz drugą, który spełnia regułę.
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]);
}
}
}
}