Partilhar via


CA2230: Usar parâmetros para argumentos variáveis

Item Valor
RuleId CA2230
Categoria Microsoft.Usage
Alteração da falha Quebra

Causa

Um tipo público ou protegido contém um método público ou protegido que usa a convenção de chamada VarArgs.

Observação

Esta regra foi preterida. Para obter mais informações, confira Regras preteridas.

Descrição da regra

A convenção de chamada VarArgs é usada com determinadas definições de método que utilizam um número variável de parâmetros. Um método que usa a convenção de chamada VarArgs não é compatível com CLS (Common Language Specification) e pode não ser acessível entre linguagens de programação.

Em C#, a convenção de chamada VarArgs é usada quando a lista de parâmetros de um método termina com a palavra-chave __arglist. O Visual Basic não dá suporte à convenção de chamada e o VarArgs e o C++ permite seu uso somente em código não gerenciado que usa a notação de reticências ....

Como corrigir violações

Para corrigir uma violação dessa regra em C#, use a palavra-chave params em vez de __arglist.

Quando suprimir avisos

Não suprima um aviso nessa regra.

Exemplo

O exemplo a seguir mostra dois métodos: um que viola a regra e outro que satisfaz a regra.

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

Confira também