CA2230: используйте параметры для аргументов переменной

Товар Значение
Идентификатор правила CA2230
Категория Microsoft.Usage
Критическое изменение Критическое

Причина

Общедоступный или защищенный тип содержит общедоступный или защищенный метод, использующий соглашение о вызовах VarArgs .

Примечание.

Это правило устарело. Дополнительные сведения см. в разделе "Устаревшие правила".

Описание правила

Соглашение VarArgs о вызове используется с определенными определениями методов, которые принимают переменное число параметров. Метод, использующий соглашение о вызове VarArgs , не соответствует спецификации CLS и может быть недоступен на разных языках программирования.

В C# VarArgs соглашение о вызове используется, когда список параметров метода заканчивается ключевое слово __arglist . Visual Basic не поддерживает VarArgs соглашение о вызовах, а C++ позволяет использовать его только в неуправляемом коде, использующего многоточие ... нотации.

Устранение нарушений

Чтобы устранить нарушение этого правила в C#, используйте парамы ключевое слово вместо __arglist.

Когда лучше отключить предупреждения

Для этого правила отключать вывод предупреждений не следует.

Пример

В следующем примере показаны два метода, которые нарушают правило, и тот, который удовлетворяет правилу.

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]);
            } 
        }
    }
}

См. также