在函数的可选参数中,是否可以使用函数的返回值而不是特定的值?例如,可以这样:
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))
{
}
在函数的可选参数中,是否可以使用函数的返回值而不是特定的值?例如,可以这样:
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) {}
public void ExampleMethod(int a, int b)
{
ExampleMethod(a, b, 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);
}
是否可以在函数的可选参数中使用函数的返回值而不是特定的值?
不行。C#编程指南中可选参数的说明如下:
默认值必须是以下类型之一的表达式:new ValType()
的表达式,其中 ValType
是值类型,例如 枚举 或 结构体;default(ValType)
的表达式,其中 ValType
是值类型。