Search code examples
c#.netc#-4.0parametersoptional-parameters

C# 4.0, optional parameters and params do not work together


How can i create a method that has optional parameters and params together?

static void Main(string[] args)
{

    TestOptional("A",C: "D", "E");//this will not build
    TestOptional("A",C: "D"); //this does work , but i can only set 1 param
    Console.ReadLine();
}

public static void TestOptional(string A, int B = 0, params string[] C)
{
    Console.WriteLine(A);
    Console.WriteLine(B);
    Console.WriteLine(C.Count());
}   

Solution

  • Your only option right now is to overload the TestOptional (as you had to do before C# 4). Not preferred, but it cleans up the code at the point of usage.

    public static void TestOptional(string A, params string[] C)
    {
        TestOptional(A, 0, C);
    }
    
    public static void TestOptional(string A, int B, params string[] C)
    {
        Console.WriteLine(A);
        Console.WriteLine(B);
        Console.WriteLine(C.Count());
    }