所以我有以下功能。我希望它有一个标准的参数值,但我无法让它工作,因为它需要是一个编译时常量。我知道我可以将它设置为 null 但我希望它是一个特定的功能。
private void func(Func<List<int>, bool> eval = _ => true)
{
var b = eval();
}
Run Code Online (Sandbox Code Playgroud)
甚至有可能做这样的事情吗?
由于默认参数必须是编译时常量,因此您无法像您想要的那样提供简单的默认函数。不过,您可以使用您指出的 null 来解决此问题。
private void func(Func<List<int>, bool> eval = null)
{
eval = eval ?? (_ => true);
// Do things.
}
Run Code Online (Sandbox Code Playgroud)
如果传递 null 或在没有任何参数的情况下调用函数,这将分配您的默认实现。
在现代版本的 C# 中,您可以使用空赋值运算符??=.
这看起来像这样:
eval ??= _ => true;
| 归档时间: |
|
| 查看次数: |
223 次 |
| 最近记录: |