【发布时间】:2010-12-20 22:02:41
【问题描述】:
如果我有一个 int 数组,并且我想快速检查某个 int 值是否在该数组中,有没有办法做到这一点?
【问题讨论】:
标签: c# arrays .net visual-studio search
如果我有一个 int 数组,并且我想快速检查某个 int 值是否在该数组中,有没有办法做到这一点?
【问题讨论】:
标签: c# arrays .net visual-studio search
【讨论】:
var myArray = new [] { 1, 2};
if myArray.Contains(1)
{
do something
}
您可能需要using System.Linq;
善良,
丹
【讨论】:
例如,如果你想检查你的数组是否包含 int 0:
if (your_int_array.Contains(0))
{
//Code
}
【讨论】:
您可以使用IndexOf 方法:
int[] array = new int[] { 1, 2, 3 };
bool isArrayContains17 = Array.IndexOf(array, 17) > -1;
【讨论】:
试试这个功能:
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;
}
希望这会有所帮助。
【讨论】:
Enumerable.Contains() 方法是您在 .NET-Framework 3.5 中的朋友...
【讨论】:
如果数组已排序,那么这是最快的:
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 对未排序数组具有最佳性能。第二个选项使用谓词委托,第三个选项需要创建一个枚举器对象。
【讨论】: