多个可选参数:可以使用不同的顺序吗?

时间:2019-07-04 07:10:37

标签: c# operator-overloading optional-parameters

我有一个带有4个可选参数的方法,我想在代码中使用任何可能的组合,包括仅第一个和最后一个。

这里是一个例子:

public void Method(int a = 5, string b = "foo", bool c = true)
{
    ...
}

我想这样做:

Method(6, false);

但是,当我尝试仅使用这两个参数时,我得到一个错误,我无法将字符串转换为bool。有没有办法解决这个问题而又不会超载?我不希望使用重载,因为我将不得不使用所有可能的组合创建大约15种方法。

编辑:而且我不想使用

Method(a: 6, c: false);

因为我有点烦。

2 个答案:

答案 0 :(得分:2)

是的,可以!

您只需要在参数中添加参数名称,以指示您要将参数传递给哪个参数:

Method(a: 6, c: false);

答案 1 :(得分:0)

您还可以为不同的参数顺序创建两个具有相同名称的不同函数。

功能一:

public void Method(int a, string b, bool c)
{
    ...
}

功能二(只有两个参数):

public void Method(int a, bool c)
{
    ...
}

您的IDE会编译您的代码,并且会知道要使用哪个函数