2010-05-14 81 views
5

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

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

回答

7

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

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

并不像

if(blah.Contains(something)) 
{ 
} 

那样明显的操作,所以如果你需要的指数,那么你应该使用IndexOf操作,如果你只需要知道,如果字符串包含的子字符串,然后使用Contains

使用该工具创建作业。

0

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

使用Contains的原因是什么?在Linq中,尤其是在翻译成sql时,变成了一个相对简单的sql语句,IndexOf翻译起来更加复杂

2

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