c# - string.Contains 作为谓词而不是函数调用?
问题描述
我在 SO(不记得来自哪里:/)上找到了这个代码示例,它允许我在启动应用程序时检查行代码参数:
if (e.Args.Length == 0 || e.Args.Any("-show".Contains))
{
//show interface...
}
我似乎无法理解它是如何"-show".Contains
工作的。如果与(经典)有任何区别x => x.Contains('"-show")
(除了明显的打字增益)。
像魅力一样工作,但我想了解为什么,我觉得有大事正在发生。
解决方案
这个:
.Any("-show".Contains)
基本上是这个的简写:
.Any(s => "-show".Contains(s))
该Any
方法将委托作为参数,您可以通过多种方式创建该委托。第一个片段使用方法组,而第二个片段使用 Lambda。
说第一个是第二个的简写并不准确,因为方法组早于 Lambda,但是如果您在调用 LINQ 方法时考虑 Lambda,Any
那么实际上就是这种情况。
推荐阅读
- javascript - 如何获得只有
标签文本,包括标签
- sql - 锁表红移
- database-migration - 从 AWS Aurora 迁移到 AWS Aurora
- json - 从 API 检索数据
- sql - 保留尾随零和小数位数动态的 SQL 数据类型
- java - 服务总线主题触发的 Java Azure 函数是否支持 MessageReceiver?
- python - 如何从标签框中获取数据?
- python - 对于每个不同的 Y 值,我的线性回归数据是否应该具有大致相等数量的 X 值?
- react-native - React Navigation 5:toggleDrawer() 不起作用
- java - 受密码保护的 Java Spring Log4j