C# 如何在Visual C中查找数组中的值#
如果我有一个int数组,并且我想快速检查该数组中是否存在某个int值,是否有方法可以做到这一点?如果您使用的是C#3.0或更高版本 e、 g 您可能需要一个C# 如何在Visual C中查找数组中的值#,c#,arrays,.net,visual-studio,search,C#,Arrays,.net,Visual Studio,Search,如果我有一个int数组,并且我想快速检查该数组中是否存在某个int值,是否有方法可以做到这一点?如果您使用的是C#3.0或更高版本 e、 g 您可能需要一个来使用System.Linq 善良 Dan如果要检查数组是否包含int 0,请使用此示例: if (your_int_array.Contains(0)) { //Code } 您可以使用以下方法: 尝试此功能: public static bool FindValueFromArray(object[] Values,object
来使用System.Linq代码>
善良
Dan如果要检查数组是否包含int 0,请使用此示例:
if (your_int_array.Contains(0))
{
//Code
}
您可以使用以下方法:
尝试此功能:
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
对于未排序的数组具有最佳性能。第二个选项使用谓词委托,第三个选项需要创建枚举器对象。I've+1。但我要补充的是,排序是必需的,只有在重复搜索时才真正值得。如果您使用的是.NET3.5,这种新的Contains方法并没有得到很好的宣传。
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;
}
Array.BinarySearch(myArray, value) >= 0;
Array.IndexOf(myArray, value) >= 0; //.Net 1
Array.Exists(array, delegate(int x) { return x == value; }); //.Net 2
myArray.Contains(value); //.Net 3