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 a VarArgs convenção de chamada.
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 não é especificação de CLS (Common Language) em conformidade e talvez não estejam acessível através de linguagens de programação.
No C#, o VarArgs convenção de chamada é usada quando a lista de parâmetros de um 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 um 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