c# - Func<> 作为函数的可选参数必须是编译时间常数吗?
问题描述
所以我有以下功能。我希望它有一个标准的参数值,但我无法让它工作,因为它需要是一个编译时间常数。我知道我可以将它设置为 null 但我希望它是一个特定的功能。
private void func(Func<List<int>, bool> eval = _ => true)
{
var b = eval();
}
甚至有可能这样的事情吗?
解决方案
由于默认参数必须是编译时常量,因此您无法提供您想要的简单默认函数。但是,您可以使用 null 正如您所指出的那样解决此问题。
private void func(Func<List<int>, bool> eval = null)
{
eval = eval ?? (_ => true);
// Do things.
}
如果传递 null ,或者在没有任何参数的情况下调用函数,这将分配您的默认实现。
在现代版本的 C# 中,您可以使用空赋值运算符??=
.
这看起来像这样:
eval ??= _ => true;
推荐阅读
- excel - 将新行添加到另一个工作表时,保持函数引用不变?
- r - 使用 RDCOMClient 导入并运行 excel 模块 .bas
- flutter - Flutter web Future .then/.whenComplete
- angular - 使用 setInterval 和 observables 的 Angular 内存泄漏
- python - (Selenium) 运行许多性能较低的 firefox 浏览器
- excel - 无法设置 PivotItem 类的 Visible 属性
- app-store - 错误 ITMS-90164:“com.apple.developer.ubiquity-kvstore-identifier”密钥的代码签名权利无效
- php - 如何在视图中分离 RepeatedType 小部件?
- ionic-framework - 关闭浏览器后 ionic InAppBrowser 请求未经授权
- swift - SCNNode SCNAction.move(to:) 未运行但被调用 - Swift