【发布时间】:2021-01-16 00:39:56
【问题描述】:
例如,假设我想创建一个这样的函数,并希望最后一个参数是可选的(如果提供,则使用它 - 否则只需创建一个新参数并使用它)
public void DoSomething (int x, int y = 5, Search search = new Search())
{
...
}
我得到错误:
"'search' 的默认参数值必须是编译时常量"
所以我尝试将初始值设为常量或只创建一个类成员,但这似乎也不起作用:
private const Search DefaultSearch = new Search();
//OR
private Search DefaultSearch;
public MyClassConstructor()
{
DefaultSearch = new Search();
}
...
public void DoSomething (int x, int y = 5, Search search = DefaultSearch)
{
...
}
但是由于错误,这些都不起作用。我还尝试使用 ? 使类型 Search 可以为空。但我想这在我的 C# (7.3) 版本中是不允许的。有什么解决办法吗?如果可能的话,我不想放弃并且只使用重载方法。一位同事提到代表可能会完成此操作,但我从未使用过,也无法弄清楚使其在这种情况下工作的语法。
【问题讨论】:
标签: c# methods parameters delegates