Compartilhar via


Usar parâmetros para variável argumentos

TypeName

UseParamsForVariableArguments

CheckId

CA2230

Category (Categoria)

Microsoft.uso

Quebrando alterar

Quebrando

Causa

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

Descrição da regra

The 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 não é especificação CLS (Common linguagem) em conformidade e talvez não estejam acessível através de linguagens de programação.

Em translation from VPE for Csharp, o VarArgs convenção de chamada é usada quando um método parâmetro lista termina com o __arglist palavra-chave. Visual Basic não oferece suporte a VarArgs chamada convenção e Visual C++ permite que 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 translation from VPE for Csharp, use o params (Referência 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, uma que viola a regra e outra 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

Conceitos

CLS (Common Language Specification)

Referência

System.Reflection.CallingConventions