我有一个接收bool的函数,如下所示:
public void LoadEndPoints(bool mock)
{
}
我可以通过LoadEndpoints(true)或LoadEndpoints(false)调用它,但这可能有点难以理解,因为你需要知道true / false代表什么。有没有办法将参数名称和值传递给函数,如LoadEndPoints(mock = true)?
答案 0 :(得分:3)
是的!
您可以指定参数名称,如下所示:
myObject.LoadEndPoints(mock: true);
进一步阅读
提高代码可读性的另一种方法是使用枚举,如下所示:
public enum LoadOption
{
Normal,
Mock
}
public void LoadEndPoints(LoadOption option)
{
...
}
然后电话会看起来像这样:
myObject.LoadEndPoints(LoadOption.Mock);
答案 1 :(得分:2)
您可以使用'命名参数',C#4.0功能;然后打电话给:myObject.LoadEndPoints(mock : true);
如果可读性确实是您最关心的问题,您甚至可以公开两个显式方法,并在内部重用逻辑 - 类似于:
public void LoadEndPointsWithoutMock()
{
LoadEndPoints(false);
}
public void LoadEndPointsByMocking()
{
LoadEndPoints(true);
}
private void LoadEndPoints(bool mock)
{
}
另外,我不会说LoadEndPointsWithoutMock
等是很棒的方法名称。理想情况下,名称应该与域名有关。
答案 2 :(得分:1)
您可以使用KeyValuePair:
KeyValuePair kvp = new KeyValuePair(BoolType, BoolValue)
答案 3 :(得分:0)
是的,你可以在c#中使用以下语法:
myObject.LoadEndPoints(mock : true);
在VB中:
myObject.LoadEndPoints(mock := true)
答案 4 :(得分:0)
使用命名参数。看看这个Named and Optional Arguments