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