我在工作中继承了一些代码,它们的气味很差。我希望找到最轻松的解决方案。
有没有一种方法可以检查某个任意数字在数组中是否为有效元素?
示例-我需要检查array [25]是否存在。
最好我更喜欢这样做,而不用通过数组的foreach()来找到行。
有什么办法做到这一点,还是我陷入了foreach循环的困境?
我在工作中继承了一些代码,它们的气味很差。我希望找到最轻松的解决方案。
有没有一种方法可以检查某个任意数字在数组中是否为有效元素?
示例-我需要检查array [25]是否存在。
最好我更喜欢这样做,而不用通过数组的foreach()来找到行。
有什么办法做到这一点,还是我陷入了foreach循环的困境?
Answers:
测试长度
int index = 25;
if(index < array.Length)
{
//it exists
}
您也可以使用LINQ来实现:
var exists = array.ElementAtOrDefault(index) != null;
new object[]{ null }.ElementAtOrDefault(index)
将返回,null
因为0处 的元素是null
。使用ElementAtOrDefault
并不是检查数组索引是否存在的好方法,添加到末尾的相等性检查会使结果不确定。
array.Length > index
。
您所说的“有效元素”到底是什么意思?您可以这样做:
if (array.Length >= 26)
它将告诉您25是否是数组的有效索引(假设下限为0)。
如果您需要知道它是否为非null,请使用:
if (array[25] != null)
(或两者的结合)。
如果这些方法没有帮助,请针对您的问题提供更准确的含义“有效”。
Index was outside the bounds of the array
您宁可使用列表,也可以检查其存在。
List<int> l = new List<int>();
l.Add(45);
...
...
if (l.Count == 25) {
doStuff();
}
int num = 45;
if (l.Contains(num)) {
doMoreStuff();
}