CA2230: 가변 인수로 params를 사용하십시오.

항목
RuleId CA2230
범주 Microsoft.Usage
주요 변경 내용 주요 변경

원인

public 또는 protected 형식은 VarArgs 호출 규칙을 사용하는 public 또는 protected 메서드를 포함합니다.

참고 항목

이 규칙은 더 이상 사용되지 않습니다. 자세한 내용은 사용되지 않는 규칙을 참조하세요.

규칙 설명

VarArgs 호출 규칙은 가변적인 개수의 매개 변수를 사용하는 특정 메서드 정의와 함께 사용됩니다. VarArgs 호출 규칙을 사용하는 메서드는 CLS(공용 언어 사양) 규격이 아니며 프로그래밍 언어 간에 액세스하지 못할 수 있습니다.

C#에서 VarArgs 호출 규칙은 메서드의 매개 변수 목록이 __arglist 키워드로 끝날 때 사용됩니다. Visual Basic은 VarArgs 호출 규칙을 지원하지 않으며 C++에서는 줄임표 ... 표기법을 사용하는 비관리 코드에서만 해당 호출 규칙을 사용할 수 있습니다.

위반 문제를 해결하는 방법

C#에서 이 규칙 위반 문제를 해결하려면 __arglist 대신 params 키워드를 사용합니다.

경고를 표시하지 않는 경우

이 규칙에서는 경고를 표시해야 합니다.

예시

다음 예제에서는 두 가지 메서드(규칙을 위반하는 메서드와 규칙을 충족하는 메서드)를 보여 줍니다.

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

참고 항목