2010-05-14 130 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沒有這樣的過載。