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