C#4.0,可选参数和参数不起作用

问题描述 投票:0回答:4

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

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());
}   
c# .net c#-4.0 parameters optional-parameters
4个回答
47
投票

您现在只有您的选择是超载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()); }
    

17
投票

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



16
投票

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



0
投票
public static void TestOptional(string A, params string[] C) { TestOptional(A, C: C); } 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(); }


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.