使用函数定义可选参数
Use a function to define an optional parameter
是否可以使用函数的 return 值而不是特定值作为函数中的可选参数?
例如代替:
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));
}
这样您就不必处理可为 null 的值类型
其中一种方式:
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);
}
Is it possible to use the return value of a function instead of a specific value as optional parameter in a function?
没有。这不可能。 Optional Arguments 上的 C# 编程指南说:
A default value must be one of the following types of expressions:
a constant expression;
an expression of the form new ValType()
, where ValType
is a value type, such as an enum or a struct;
an expression of the form default(ValType)
, where ValType
is a value type.
查看替代解决方案的其他答案。
是否可以使用函数的 return 值而不是特定值作为函数中的可选参数? 例如代替:
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));
}
这样您就不必处理可为 null 的值类型
其中一种方式:
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);
}
Is it possible to use the return value of a function instead of a specific value as optional parameter in a function?
没有。这不可能。 Optional Arguments 上的 C# 编程指南说:
A default value must be one of the following types of expressions:
a constant expression;
an expression of the form
new ValType()
, whereValType
is a value type, such as an enum or a struct;an expression of the form
default(ValType)
, whereValType
is a value type.
查看替代解决方案的其他答案。