C#:如何将参数键/值传递给函数?

时间:2013-04-26 19:57:46

标签: c# asp.net

我有一个接收bool的函数,如下所示:

public void LoadEndPoints(bool mock)
{

}

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

5 个答案:

答案 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