CA2230: Usar parâmetros para argumentos variáveis
Item | Valor |
---|---|
RuleId | CA2230 |
Categoria | Microsoft.Usage |
Alteração da falha | Quebra |
Causa
Um tipo público ou protegido contém um método público ou protegido que usa a convenção de chamada VarArgs
.
Observação
Esta regra foi preterida. Para obter mais informações, confira Regras preteridas.
Descrição da regra
A convenção de chamada VarArgs
é usada com determinadas definições de método que utilizam um número variável de parâmetros. Um método que usa a convenção de chamada VarArgs
não é compatível com CLS (Common Language Specification) e pode não ser acessível entre linguagens de programação.
Em C#, a convenção de chamada VarArgs
é usada quando a lista de parâmetros de um método termina com a palavra-chave __arglist
. O Visual Basic não dá suporte à convenção de chamada e o VarArgs
e o C++ permite seu uso somente em código não gerenciado que usa a notação de reticências ...
.
Como corrigir violações
Para corrigir uma violação dessa regra em C#, use a palavra-chave params em vez de __arglist
.
Quando suprimir avisos
Não suprima um aviso nessa regra.
Exemplo
O exemplo a seguir mostra dois métodos: um que viola a regra e outro que satisfaz 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);
while (argumentIterator.GetRemainingCount() > 0)
{
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]);
}
}
}
}
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários