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());
}
3 个解决方案
#1
35
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.
您现在唯一的选择是重载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());
}
#2
12
Try
尝试
TestOptional("A", C: new []{ "D", "E"});
#3
9
This worked for me:
这对我有用:
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();
}
#1
35
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.
您现在唯一的选择是重载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());
}
#2
12
Try
尝试
TestOptional("A", C: new []{ "D", "E"});
#3
9
This worked for me:
这对我有用:
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();
}