Compartilhar via


CA2230: Use params para argumentos de variáveis

TypeName

UseParamsForVariableArguments

CheckId

CA2230

<strong>Categoria</strong>

Microsoft.Usage

Alteração significativa

Quebrando

Causa

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

Descrição da regra

O VarArgs convenção de chamada é usada com determinadas definições de método que levam a um número variável de parâmetros. Um método usando o VarArgs convenção de chamada é a não especificação de CLS (Common Language) compatível e pode não estar acessível em linguagens de programação.

Em C# a VarArgs convenção de chamada é usada quando a lista de parâmetros do método termina com o __arglist palavra-chave. Visual Basic não oferece suporte a VarArgs chamada convenção e Visual C++ permite que o seu uso apenas em código não gerenciado que usa a elipse ... notação.

Como corrigir violações

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

Quando suprimir avisos

Não suprimir um aviso da regra.

Exemplo

O exemplo a seguir mostra dois métodos, que viola a regra e que satisfaça 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);
            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

System.Reflection.CallingConventions

Conceitos

CLS (Common Language Specification)