【问题标题】:How to specify parameter from multiple optional parameters如何从多个可选参数中指定参数
【发布时间】:2014-01-27 03:32:45
【问题描述】:

我有一种方法,它采用一个动态类型(可能不相关)的参数和多个类型的多个可选参数。有没有办法指定你传递的参数?

使用这段代码,我得到了编译器错误(如下),我希望不必为可选参数编​​写重载或重写具有多个顺序的函数。

  • 错误 2 参数 3:无法从 'string' 转换为 'bool'
  • 错误 1 ​​最佳重载方法匹配 Index(int, bool, bool, string)' 有一些无效参数

代码:

public void DoSomeWork()
{
    Index<int>(Id, false,"test"); //compiler error 
}

private void Index<T>(T o, bool flush = false, bool userDispose = true, string starter = "stop")
{

}

【问题讨论】:

    标签: c# .net optional-parameters


    【解决方案1】:

    使用named arguments,这是 C# 的一大特色。

     Index<int>(Id, flush: false, starter: "test"); 
    

    【讨论】:

    • 谢谢,为我做了。
    【解决方案2】:

    您可以使用名称后跟双点来标记可选参数。在您的示例中:

    public void DoSomeWork()
    {
        Index<int>(Id, false, starter: "test");
    }
    

    这意味着Idfalse将前两个参数命名为oflush,第三个参数userDispose没有设置,starter设置为test

    有关命名参数和可选参数的更多信息,请查看MSDN

    【讨论】:

    • 有趣,我不知道!
    • 谢谢,正是我要找的东西(一旦允许我就会标记为答案)。
    猜你喜欢
    • 1970-01-01
    • 2011-11-20
    • 2012-05-11
    • 1970-01-01
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    相关资源
    最近更新 更多