我在工作中继承了一些非常难闻的代码。我希望找到最无痛的解决方案。
有没有办法检查某个任意数字是否是数组中的有效元素?
示例 - 我需要检查数组[25]是否存在。
我最好不要在没有通过数组的foreach()来找到行的情况下这样做。
有没有办法做到这一点,还是我坚持使用foreach循环?
答案 0 :(得分:119)
测试长度
int index = 25;
if(index < array.length)
{
//it exists
}
答案 1 :(得分:68)
您也可以使用LINQ来实现这一目标:
var exists = array.ElementAtOrDefault(index) != null;
答案 2 :(得分:15)
“你是一个有效的元素”究竟是什么意思?你可以这么做:
if (array.Length >= 26)
会告诉你25是否是数组的有效索引(假设0下限)。
如果您需要知道它是否为空,请使用:
if (array[25] != null)
(或两者的结合)。
如果这些没有帮助,请为您的问题提供更为准确的“有效”含义。
答案 3 :(得分:8)
假设您还想检查该项是否为空
if (array.Length > 25 && array[25] != null)
{
//it exists
}
答案 4 :(得分:2)
// I'd modify this slightly to be more resilient to a bad parameter
// it will handle your case and better handle other cases given to it:
int index = 25;
if (index >= 0 && index < array.Length)
{
// Array element found
}
答案 5 :(得分:1)
您可以使用数组的长度,并查看您的任意数字是否适合该范围。例如,如果您有一个大小为10的数组,则array [25]无效,因为25不小于10.
答案 6 :(得分:1)
您可以使用List,以便检查是否存在。
List<int> l = new List<int>();
l.Add(45);
...
...
if (l.Count == 25) {
doStuff();
}
int num = 45;
if (l.Contains(num)) {
doMoreStuff();
}
答案 7 :(得分:1)
array.length
将告诉您数组中有多少元素
答案 8 :(得分:1)
这里的答案很简单,但仅适用于一维数组。 对于多维数组,检查 null 是判断元素是否存在的直接方法。此处的示例代码检查空值。请注意 try/catch 块 [可能] 矫枉过正,但它使块防弹。
public ItemContext GetThisElement(int row,
int col)
{
ItemContext ctx = null;
if (rgItemCtx[row, col] != null)
{
try
{
ctx = rgItemCtx[row, col];
}
catch (SystemException sex)
{
ctx = null;
// perhaps do something with sex properties
}
}
return (ctx);
}
答案 9 :(得分:0)
您可以检查索引是否小于数组的长度。这不会检查空值或其他奇怪的情况,其中索引可以被赋值但是没有明确地给出一个。
答案 10 :(得分:0)
您可以检查数组的长度,看看项目25是否在数组中是有效的,然后您可以使用
if (array.Length > 25)
{
if (array[25] != null)
{
//good
}
}
查看数组项本身是否已设置。
答案 11 :(得分:0)
听起来非常像你使用数组来存储不同的字段。这绝对是代码味道。我会尽量避免使用数组,因为它们通常不适合(或不需要)高级代码。
在短期内切换到简单的词典可能是一个可行的选择。就像使用大型物业包类一样。有很多选择。你现在遇到的问题只是设计不良的一个症状,你应该考虑修复底层问题,而不仅仅是修补糟糕的设计,所以它有点像,现在大部分都有效。