2009-11-27 25 views

回答

9

如果數組進行排序,那麼這是最快的:

Array.BinarySearch(myArray, value) >= 0; 

如果陣列中搜索很多並且很少修改,那麼您可能會發現值得在修改後對數組進行排序(使用Array.Sort)並使用上述內容。否則,使用你喜歡的選項:

Array.IndexOf(myArray, value) >= 0; //.Net 1 

Array.Exists(array, delegate(int x) { return x == value; }); //.Net 2 

myArray.Contains(value); //.Net 3 

IndexOf具有無序陣列的最佳性能。第二個選項使用謂詞委託,第三個選項需要創建一個枚舉器對象。

+0

這個新的Contains方法沒有很好的公開。 – 2010-01-07 03:31:50

2

Enumerable.Contains如果您使用的是C#3.0或更高版本。

例如

var contained = myArray.Contains(4); 
1
var myArray = new [] { 1, 2}; 
if myArray.Contains(1) 
{ 
do something 
} 

您可能需要一個using System.Linq;

善良,

4

使用例如這個,如果你想檢查你的數組包含INT 0:

if (your_int_array.Contains(0)) 
{ 
    //Code 
} 
1

您可以使用IndexOf方法:

int[] array = new int[] { 1, 2, 3 }; 
bool isArrayContains17 = Array.IndexOf(array, 17) > -1; 
0

試試這個功能:

public static bool FindValueFromArray(object[] Values,object valueToSearch){ 
    bool retVal = false; 
    Array myArray = (Array)Values; 
    int found = Array.BinarySearch(myArray, valueToSearch); 
    if (found != -1){ 
     retVal = true; 
    } 
    return retVal; 
} 

希望這有助於。

+2

二進制搜索只適用於數組排序 – 2009-11-27 08:58:10

+0

而你基於這個我投票我的評論? – 2009-11-27 09:00:30

+0

我已+1。但我會補充說,排序是必需的,只有重複搜索纔是真正值得的。 – RichardOD 2009-11-27 09:05:51

3

的Enumerable.Contains()方法是你在.NET框架3.5的朋友...

+1

提供您正在使用.NET 3.5 – RichardOD 2009-11-27 09:06:36

+0

@RichardOD:你說得對。編輯答案... – EricSchaefer 2009-11-27 12:23:57

相關問題