Compartilhar via


CA2230: usar parâmetros para argumentos variáveis

TypeName

UseParamsForVariableArguments

CheckId

CA2230

Categoria

Microsoft.Usage

Alteração Significativa

Quebra

Causa

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

Descrição da Regra

VarArgs que chama a convenção é usado com certas definições do método que têm um número variável de parâmetros.Um método que usa VarArgs que chama a convenção não é compatível CLS (CLS) e pode não estar acessível através das linguagens de programação.

No C#, VarArgs que chama a convenção é usado quando a lista de parâmetros de um método termina com a palavra-chave de __arglist .Visual Basic não da suporte VarArgs que chama a convenção, e o Visual C++ permite o uso apenas em código não gerenciado usando a notação de ... de reticências.

Como Corrigir Violações

Para corrigir uma violação desta regra no C#, use a palavra-chave de params (Referência de C#) em vez de __arglist.

Quando Suprimir Alertas

Não elimine um alerta desta regra.

Exemplo

O exemplo a seguir mostra dois métodos, um que viola a regra e outro que obedece à 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);
            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]);
            } 
        }
    }
}

Consulte também

Referência

CallingConventions

Conceitos

Independência da linguagem e componentes independentes da linguagem