如何在Visual C#中查找值是否在数组中

neu*_*cer 2 c# arrays visual-studio

如果我有一个int数组,并且我想快速检查某个int值是否在该数组中,是否有方法可以做到这一点?

Mat*_*lls 9

如果数组已排序,那么这是最快的:

Array.BinarySearch(myArray, value) >= 0;
Run Code Online (Sandbox Code Playgroud)

如果对数组进行了大量搜索并且很少进行修改,那么您可能会发现在修改(使用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
Run Code Online (Sandbox Code Playgroud)

IndexOf对于未排序的数组具有最佳性能.第二个选项使用谓词委托,第三个选项需要创建枚举器对象.