是否有理由在字符串/列表上使用.Contains而不是.IndexOf? 我将使用.Contains编写的大多数代码在不久之后需要项目的索引,因此必须执行这两个语句。但为什么不在一个?
if ((index = blah.IndexOf(something) >= 0)
// i know that Contains is true and i also have the index
答案 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翻译起来比较复杂