是否可以使用函数的返回值代替特定值作为函数中的可选参数?例如,代替:
public void ExampleMethod(int a, int b, int c=10)
{
}
我想要类似的东西
private int ChangeC(int a, int b)
{
return a+b;
}
public void ExampleMethod(int a, int b, int c=ChangeC(a,b))
{
}
其中一种方式:
private int ChangeC(int a, int b)
{
return a+b;
}
public void ExampleMethod(int a, int b, int? c=null)
{
c = c ?? ChangeC(a,b);
}
没有,这是不可能的。对于一个可选参数,该值必须是一个编译时间常数。但是,您可以像这样重载该方法:
private int ChangeC(int a, int b){
return a+b;
}
public void ExampleMethod(int a, int b, int c) {}
public void ExampleMethod(int a, int b)
{
ExampleMethod(a, b, ChangeC(a, b));
}
是否可以使用函数的返回值代替特定值作为函数中的可选参数?
没有这不可能。 Optional Arguments上的C#编程指南说:
默认值必须是以下类型的表达式之一:
一个常量表达式;
形式为
default(ValType)
的表达式,其中default(ValType)
是值类型。
请参阅其他答案以了解其他解决方案。