Sdílet prostřednictvím


CA2230: Použijte parametry pro proměnné argumenty

Název_typu

UseParamsForVariableArguments

CheckId

CA2230

Kategorie

Microsoft.Usage

Změnit rozdělení

Rozdělení

Příčina

Typ veřejné nebo chráněné obsahuje veřejné nebo chráněné metody, která používá VarArgs konvence volání.

Popis pravidla

VarArgs Konvence volání používá určité definice metody, proměnný počet parametrů, které.Metoda použití VarArgs konvence volání není společný jazyk specifikace (CLS) kompatibilní a pravděpodobně nebudou přístupné přes programovacích jazyků.

V jazyce C# VarArgs konvence volání se používá, když končí seznam parametrů metody __arglist klíčové slovo.Visual Basic nepodporuje VarArgs volání úmluvy a Visual C++ umožňuje jeho použití pouze nespravovaný kód, který používá elipsy, ... notaci.

Jak opravit porušení

Oprava porušení tohoto pravidla v jazyce C#, použijte params (Referenční dokumentace jazyka C#) klíčové slovo namísto __arglist.

Při potlačení upozornění

Nepotlačovat upozornění od tohoto pravidla.

Příklad

Následující příklad ukazuje dvě metody, která porušují pravidlo a která splňuje pravidla.

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]);
            } 
        }
    }
}

Viz také

Referenční dokumentace

CallingConventions

Koncepty

Jazyková nezávislost a jazykově nezávislé komponenty