我有一个方法接受一个动态类型的(可能不相关的)参数和多个不止一种类型的可选参数。有什么方法可以指定要传递的参数吗?
使用这段代码,我遇到了编译器错误(如下),我希望不必为可选参数编写重载或重写具有多个顺序的函数。
- 错误 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")
{
}
最佳答案
您可以使用名称后跟双点来标记可选参数。在你的例子中:
public void DoSomeWork()
{
Index<int>(Id, false, starter: "test");
}
这意味着Id
和false
命名前两个参数o
和flush
,第三个参数userDispose
未设置,参数 starter
设置为 test
。
有关命名参数和可选参数的更多信息,请查看 MSDN .
关于c# - 如何从多个可选参数中指定参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21005717/