C#4.0,可选参数和参数不能一起工作

我如何创build一个具有可选参数和参数在一起的方法?

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

现在你唯一的select是重载TestOptional(就像你在C#4之前所做的那样)。 不是首选的,但它在使用点清理代码。

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

尝试

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

这对我工作:

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