Udostępnij za pośrednictwem


CA2230: Użyj parametrów dla zmiennych argumentów

TypeName

UseParamsForVariableArguments

CheckId

CA2230

Kategoria

Microsoft.Usage

Zmiana kluczowa

Kluczowa

Przyczyna

Typ publiczny lub chroniony zawiera metodę publiczną lub chronioną, która używa konwencji wywoływania VarArgs.

Opis reguły

Konwencja wywołania VarArgs jest używana w konkretnych definicjach metody, która przyjmuje zmienną liczbę parametrów.Metoda, używająca konwencji wywołania VarArgs nie jest zgodna z Common Language Specification (CLS) i może nie być dostępna pomiędzy językami programowania.

W języku C#, konwencja wywoływania VarArgs jest używana, kiedy lista parametrów metody kończy się słowem kluczowym __arglist.Język Visual Basic nie obsługuje konwencji wywoływania VarArgs i Visual C++ umożliwia jej użycie tylko w kodzie niezarządzanym, który używa notacji wielokropka ....

Jak naprawić naruszenia

Aby naprawić naruszenie tej reguły w języku C#, należy użyć słowa kluczowego params (odwołanie w C#) zamiast __arglist.

Kiedy pominąć ostrzeżenia

Nie należy pomijać ostrzeżenia dotyczącego tej reguły.

Przykład

Poniższy przykład ilustruje dwie metody, jedną która narusza tą regułę oraz drugą, który spełnia regułę.

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

Zobacz też

Informacje

CallingConventions

Koncepcje

Niezależność od języka i elementy niezależne od języka