多个可选参数:可以使用不同的顺序吗?
Multiple optional parameters: it is possible to use different order?
我有一个带有 4 个可选参数的方法,我想在我的代码中使用任何可能的组合,包括第一个和最后一个。
这是一个例子:
public void Method(int a = 5, string b = "foo", bool c = true)
{
...
}
我想这样做:
Method(6, false);
但是,当我尝试仅使用这两个参数时,出现错误,无法将字符串转换为布尔值。有没有办法在不超载的情况下解决这个问题?我不想使用重载,因为我必须创建大约 15 种具有所有可能组合的方法。
编辑:我不想使用
Method(a: 6, c: false);
因为我觉得有点烦人。
是的,你可以!
您只需将参数名称添加到您的参数中,以表明您将参数传递给哪个参数:
Method(a: 6, c: false);
您还可以为不同的参数顺序创建 2 个具有相同名称的不同函数。
函数一:
public void Method(int a, string b, bool c)
{
...
}
函数二(只有2个参数):
public void Method(int a, bool c)
{
...
}
您的 IDE 会编译您的代码并知道要使用哪个函数
如果您运行遇到问题,如果您有定义每个参数,您也可以这样做:
Method(a: 6, b: "undefined", c: false);
我有一个带有 4 个可选参数的方法,我想在我的代码中使用任何可能的组合,包括第一个和最后一个。
这是一个例子:
public void Method(int a = 5, string b = "foo", bool c = true)
{
...
}
我想这样做:
Method(6, false);
但是,当我尝试仅使用这两个参数时,出现错误,无法将字符串转换为布尔值。有没有办法在不超载的情况下解决这个问题?我不想使用重载,因为我必须创建大约 15 种具有所有可能组合的方法。
编辑:我不想使用
Method(a: 6, c: false);
因为我觉得有点烦人。
是的,你可以!
您只需将参数名称添加到您的参数中,以表明您将参数传递给哪个参数:
Method(a: 6, c: false);
您还可以为不同的参数顺序创建 2 个具有相同名称的不同函数。
函数一:
public void Method(int a, string b, bool c)
{
...
}
函数二(只有2个参数):
public void Method(int a, bool c)
{
...
}
您的 IDE 会编译您的代码并知道要使用哪个函数
如果您运行遇到问题,如果您有定义每个参数,您也可以这样做:
Method(a: 6, b: "undefined", c: false);