C # 4.0, los parámetros opcionales y los params no funcionan juntos

¿Cómo puedo crear un método que tenga parámetros opcionales y params juntos?

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

Su única opción ahora es sobrecargar el TestOptional (como tenía que hacer antes de C # 4). No preferido, pero limpia el código en el punto de uso.

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

Tratar

 TestOptional("A", C: new []{ "D", "E"}); 

Esto funcionó para mí:

  static void Main(string[] args) { TestOptional("A"); TestOptional("A", 1); TestOptional("A", 2, "C1", "C2", "C3"); TestOptional("A", B:2); TestOptional("A", C: new [] {"C1", "C2", "C3"}); Console.ReadLine(); } public static void TestOptional(string A, int B = 0, params string[] C) { Console.WriteLine("A: " + A); Console.WriteLine("B: " + B); Console.WriteLine("C: " + C.Length); Console.WriteLine(); }