Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All
Expand Minimize

Use params for variable arguments

TypeName

UseParamsForVariableArguments

CheckId

CA2230

Category

Microsoft.Usage

Breaking Change

Breaking

A public or protected type contains a public or protected method that uses the VarArgs calling convention.

The VarArgs calling convention is used with certain method definitions that take a variable number of parameters. A method using the VarArgs calling convention is not Common Language Specification (CLS) compliant and might not be accessible across programming languages.

In C#, the VarArgs calling convention is used when a method's parameter list ends with the __arglist keyword. Visual Basic does not support the VarArgs calling convention, and Visual C++ allows its use only in unmanaged code that uses the ellipse ... notation.

To fix a violation of this rule in C#, use the params (C# Reference) keyword instead of __arglist.

Do not exclude a warning from this rule.

The following example shows two methods, one that violates the rule and one that satisfies the rule.

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

Community Additions

ADD
Show:
© 2015 Microsoft