如何从多个可选参数中指定参数

时间:2014-01-08 20:22:51

标签: c# .net optional-parameters

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

使用这段代码我得到了编译器错误(下面),我想不必编写重载或用可选参数的多个命令重写函数。

  • 错误2参数3:无法从'string'转换为'bool'
  • 错误1索引的最佳重载方法匹配(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")
{

}

2 个答案:

答案 0 :(得分:5)

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

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

这意味着Idfalse为前两个参数oflush命名,第三个参数userDispose未设置且参数{{ 1}}设置为starter

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

答案 1 :(得分:3)

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

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