Share via


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