collection / string .Contains vs collection / string.IndexOf

时间:2010-05-14 01:38:23

标签: c# .net string indexing contains

是否有理由在字符串/列表上使用.Contains而不是.IndexOf? 我将使用.Contains编写的大多数代码在不久之后需要项目的索引,因此必须执行这两个语句。但为什么不在一个?

if ((index = blah.IndexOf(something) >= 0)
    // i know that Contains is true and i also have the index

3 个答案:

答案 0 :(得分:7)

你是对的,IndexOf是比Contains更通用的操作。但是,Contains仍然非常有用,因为它明确表示操作。

if(blah.IndexOf(something) >=0)
{
}

并不像

那样明显
if(blah.Contains(something))
{
}

所以如果你需要索引,那么你应该使用IndexOf操作,如果你只需要知道字符串是否包含子字符串,那么使用Contains

将该工具用于为其创建的作业。

答案 1 :(得分:2)

您想要使用Contains的一个原因是它有一个重载,允许您指定IEqualityComparer<String>(如果您希望比较不区分大小写或其他什么)。 IndexOf没有这样的过载。

答案 2 :(得分:0)

它们是用于不同目的的不同功能,但您可以使用IndexOf来模仿Contains。

使用Contains的原因?在Linq中,特别是当翻译成sql时,变成了一个相对简单的sql语句,IndexOf翻译起来比较复杂