CA2230: Użyj parametrów dla zmiennych argumentów
Pozycja | Wartość |
---|---|
Ruleid | CA2230 |
Kategoria | Microsoft.Usage |
Zmiana powodująca niezgodność | Kluczowa |
Przyczyna
Typ publiczny lub chroniony zawiera publiczną lub chronioną metodę, która używa VarArgs
konwencji wywoływania.
Uwaga
Ta reguła została przestarzała. Aby uzyskać więcej informacji, zobacz Przestarzałe reguły.
Opis reguły
Konwencja VarArgs
wywoływania jest używana z określonymi definicjami metod, które przyjmują zmienną liczbę parametrów. Metoda używająca VarArgs
konwencji wywoływania nie jest zgodna ze specyfikacją języka wspólnego (CLS) i może nie być dostępna w różnych językach programowania.
W języku C# konwencja wywoływania jest używana, VarArgs
gdy lista parametrów metody kończy się __arglist
słowem kluczowym. Język Visual Basic nie obsługuje VarArgs
konwencji wywoływania, a język C++ umożliwia korzystanie z niego tylko w niezarządzanych kodzie korzystającym z notacji wielokropka ...
.
Jak naprawić naruszenia
Aby naprawić naruszenie tej reguły w języku C#, użyj słowa kluczowego params zamiast __arglist
.
Kiedy pomijać ostrzeżenia
Nie pomijaj ostrzeżeń dla tej reguły.
Przykład
W poniższym przykładzie przedstawiono dwie metody, które naruszają regułę i jedną, która 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);
while (argumentIterator.GetRemainingCount() > 0)
{
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]);
}
}
}
}
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla