c# - string.Contains 作为谓词而不是函数调用?

标签 c# linq predicate

我在 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 方法将委托(delegate)作为参数,您可以通过多种方式创建该委托(delegate)。第一个片段使用方法组,而第二个片段使用 Lambda。

说第一个是第二个的简写并不准确,因为方法组早于 Lambdas,但是如果您在调用像 Any 这样的 LINQ 方法时从 Lambdas 的角度考虑,那么实际上就是这种情况.

关于c# - string.Contains 作为谓词而不是函数调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50151098/

相关文章:

c# - 获得与在静态类中实现接口(interface)相同的功能的另一种方法是什么?

c# - 一般 C# 问题

c# - 禁用文本框显示其中键入的旧数据的能力

C# 使用 Linq 加入 3 个列表

c# - 如何使用 Linq 或 Lambda 执行更新?(C#, Asp.net,Linq , Lambda)

VB.NET 谓词数组查找

c# - 创建一个方法来订阅事件但仅触发一次

c# - 在 c# linq 中转换为值类型 'System.Single' 失败

c++ - 为什么 Ranges 库中的 std::views::take_while 需要 const 谓词?

filter - Java Stream 过滤器匹配多个条件谓词