在这个例子中假设我们有一个类:
public class Test
{
int a;
int b;
int c;
public Test(int a = 1, int b = 2, int c = 3)
{
this.a = a;
this.b = b;
this.c = c;
}
}
所有参数都是可选的,因此用户可以使用任一实例化类
Test test = new Test(a:a, c:c);
或者用户选择的任何内容,而无需传递所有甚至任何参数。
现在假设我们要添加另一个可选参数StreamWriter sw = new StreamWriter(File.Create(@"app.log"));
(我假设这是实例化 StreamWriter 类的正确语法)。
显然,作为必要的论点,我可以将它添加到构造函数中,如下所示:
public Test(StreamWriter sw, int a = 1, int b = 2, int c = 3)
但是,如果我希望它成为可选参数,我该怎么办?以下:
public Test(int a = 1, int b = 2, int c = 3, StreamWriter sw = new StreamWriter(File.Create(@"app.log")))
不是一个选项,因为您收到以下错误:
"Default parameter value for 'sw' must be a compile-time constant"
有没有另一种方法可以在sw
不收到此错误的情况下制作可选参数?