CA2230: Usar parámetros en argumentos de variable
Elemento | Valor |
---|---|
RuleId | CA2230 |
Category | Microsoft.Usage |
Cambio importante | Problemático |
Causa
Un tipo público o protegido contiene un método público o protegido que utiliza la convención de llamada VarArgs
.
Nota
Esta regla está en desuso. Para más información, consulte Reglas en desuso.
Descripción de la regla
La convención de llamada VarArgs
se usa con determinadas definiciones de método que toman un número variable de parámetros. Un método que usa la convención de llamada VarArgs
no es compatible con Common Language Specification (CLS) y es posible que no sea accesible entre lenguajes de programación.
En C#, la convención de llamada VarArgs
se usa cuando la lista de parámetros de un método finaliza con la palabra clave __arglist
. Visual Basic no admite la convención de llamada VarArgs
y C++ solo permite usarla en código no administrado en el que se utilice la notación de puntos suspensivos ...
.
Cómo corregir infracciones
Para corregir una infracción de esta regla en C#, use la palabra clave params en lugar de __arglist
.
Cuándo suprimir las advertencias
No suprima las advertencias de esta regla.
Ejemplo
En el ejemplo siguiente se muestran dos métodos: uno que infringe la regla y otro que la cumple.
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]);
}
}
}
}
Consulte también
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de