CA2230: Usar parámetros para argumentos de variable
Nombre de tipo |
UseParamsForVariableArguments |
Identificador de comprobación |
CA2230 |
Categoría |
Microsoft.Usage |
Cambio problemático |
Sí |
Motivo
Un tipo público o protegido contiene un método público o protegido que utiliza la convención de llamada VarArgs.
Descripción de la regla
La convención de llamada VarArgs se utiliza con determinadas definiciones de método que toman un número variable de parámetros.Un método que utiliza la convención de llamada VarArgs no es compatible con la Common Language Specification (CLS) y podría no ser accesible para todos los lenguajes de programación.
En C#, se utiliza la convención de llamada VarArgs cuando la lista de parámetros del método termina con la palabra clave __arglist.Visual Basic no admite la convención de llamada VarArgs y Visual C++ permite su uso sólo en código no administrado con puntos suspensivos ....
Cómo corregir infracciones
Para corregir una infracción de esta regla en C#, utilice la palabra clave params (Referencia de C#) en lugar de __arglist.
Cuándo suprimir advertencias
No suprima las advertencias de esta regla.
Ejemplo
El ejemplo siguiente muestra dos métodos, uno que infringe la regla y otra 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);
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]);
}
}
}
}
Vea también
Referencia
System.Reflection.CallingConventions