我有一个方法,它采用一个动态类型(可能不相关)的参数和多个类型的多个可选参数。有没有办法指定您传递的参数?
使用这段代码我得到了编译器错误(下面),我想不必编写重载或用可选参数的多个命令重写函数。
代码:
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")
{
}
答案 0 :(得分:5)
您可以使用名称后跟双点标记可选参数。在您的示例中:
public void DoSomeWork()
{
Index<int>(Id, false, starter: "test");
}
这意味着Id
和false
为前两个参数o
和flush
命名,第三个参数userDispose
未设置且参数{{ 1}}设置为starter
。
有关命名参数和可选参数的更多信息,请查看MSDN。
答案 1 :(得分:3)
使用named arguments,这是C#的一大特色。
Index<int>(Id, flush: false, starter: "test");