Compartir a través de


CA2230: Usar parámetros para argumentos de variable

Nombre de tipo

UseParamsForVariableArguments

Identificador de comprobación

CA2230

Categoría

Microsoft.Usage

Cambio problemático

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

Conceptos

Common Language Specification