![](/img/trans.png)
[英]c# - how to pass function as parameter (with parameters as values) without invoking it
[英]C#: How to pass parameter key/values to a function?
我有一個帶布爾值的函數,如下所示:
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
等是很好的方法名稱。 理想情況下,名稱應與域有關。
您可以使用KeyValuePair:
KeyValuePair kvp = new KeyValuePair(BoolType, BoolValue)
是的,您可以使用c#中的以下語法來實現:
myObject.LoadEndPoints(mock : true);
在VB中:
myObject.LoadEndPoints(mock := true)
使用命名參數。 看看這個命名和可選參數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.