String.Contains 在 c# 中不需要参数吗?

Posted

技术标签:

【中文标题】String.Contains 在 c# 中不需要参数吗?【英文标题】:String.Contains doesn't require parameters in c#? 【发布时间】:2012-05-17 18:33:47 【问题描述】:

我偶然发现了这段代码:

var knownSeparators = new[]  "\\", "/", "|", "." ;
return knownSeparators.FirstOrDefault(path.Contains);

其中路径是一个字符串,返回值也应该是一个字符串。

尽管 path.Contains 的智能感知建议使用一个参数,但没有它也可以正常工作。

这究竟是如何工作的? 有没有办法在 vb.net 中复制这种行为?

【问题讨论】:

【参考方案1】:

FirstOrDefault 接受一个委托(Func<T, bool>),此调用正在从方法组创建一个委托。相当于:

Func<string, bool> predicate = path.Contains;
return knownSeparators.FirstOrDefault(predicate);

我怀疑在 VB.NET 中你可以这样做:

Return knownSeparators.FirstOrDefault(AddressOf path.Contains)

...但如果不尝试,我无法确定。

【讨论】:

可悲的是,它仍然给出同样的错误,说它需要一个参数(在添加 addressOf 之后) @djerry:我已经编辑删除括号 - 看看是否有帮助。

以上是关于String.Contains 在 c# 中不需要参数吗?的主要内容,如果未能解决你的问题,请参考以下文章

C# (String.StartsWith && !String.EndsWith && !String.Contains) 使用列表

使用javascript实现C#的String.contains()

C#判断字符串中是否包含指定字符或字符串(Contains/IndexOf)

C#判断字符串中是否包含指定字符或字符串(Contains/IndexOf)

使用 string.Contains() 和 switch()

Java 中 String.contains() 的大 O 是啥?