1

我有一个接受布尔值的函数,如下所示:

public void LoadEndPoints(bool mock)
{

}

我可以通过 LoadEndpoints(true) 或 LoadEndpoints(false) 调用它,但这可能有点难以理解,因为您需要知道 true/false 代表什么。有没有办法将参数名称和值传递给诸如 LoadEndPoints(mock = true) 之类的函数?

4

5 回答 5

3

是的!

您可以像这样指定参数名称:

myObject.LoadEndPoints(mock: true);

延伸阅读

另一种提高代码可读性的方法是使用枚举,如下所示:

public enum LoadOption
{
    Normal,
    Mock
}

public void LoadEndPoints(LoadOption option)
{
    ...
}

然后调用看起来有点像这样:

myObject.LoadEndPoints(LoadOption.Mock);
于 2013-04-26T19:58:59.517 回答
2

您可以使用“命名参数”,这是 C# 4.0 的一项功能;因此调用:myObject.LoadEndPoints(mock : true);

如果可读性确实是您最关心的问题,您甚至可以公开两个显式方法,并在内部重用逻辑 - 类似于:

    public void LoadEndPointsWithoutMock()
    {
        LoadEndPoints(false);
    }
    public void LoadEndPointsByMocking()
    {
        LoadEndPoints(true);
    }
    private void LoadEndPoints(bool mock)
    {

    }

另外,我不会说LoadEndPointsWithoutMock, etc. 是很好的方法名称。理想情况下,名称应该与域有关。

于 2013-04-26T20:00:05.440 回答
1

您可以使用 KeyValuePair:

   KeyValuePair kvp = new KeyValuePair(BoolType, BoolValue)
于 2013-04-26T19:59:29.047 回答
0

是的,您可以在 c# 中使用以下语法:

myObject.LoadEndPoints(mock : true);

在 VB 中:

myObject.LoadEndPoints(mock := true)
于 2013-04-26T20:00:02.870 回答
0

使用命名参数。看看这个命名和可选参数

于 2013-04-26T20:00:13.493 回答