数组索引存在吗?

我在工作中inheritance了一些非常难闻的代码。 我希望find可能的最无痛的解决scheme。

有没有办法来检查一些任意数字是否是一个数组中的有效元素?

例子 – 我需要检查数组[25]是否存在。

最好我宁愿这样做,而不通过数组foreach()来发现行。

有没有办法做到这一点,或者我坚持与foreach循环?

testing长度

int index = 25; if(index < array.Length) { //it exists } 

你也可以使用LINQ来实现:

 var exists = array.ElementAtOrDefault(index) != null; 

你是什​​么意思“是一个有效的元素”? 你可以做:

 if (array.Length >= 26) 

它会告诉你25是否是一个有效的索引到数组中(假设一个0下限)。

如果你需要知道它是否为非null,只需使用:

 if (array[25] != null) 

(或两者的组合)。

如果这些没有帮助,请为您的问题提供更为准确的“有效”含义。

假设你也想检查该项目是否不为空

 if (array.Length > 25 && array[25] != null) { //it exists } 

您可以使用数组的长度,并查看您的任意数字是否适合该范围。 例如,如果您有一个大小为10的数组,则数组[25]无效,因为25不小于10。

你可以使用一个列表,所以你可以检查存在。

 List<int> l = new List<int>(); l.Add(45); ... ... if (l.Count == 25) { doStuff(); } int num = 45; if (l.Contains(num)) { doMoreStuff(); } 
 // 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 } 

array.length会告诉你在一个数组中有多less个元素

您可以检查索引是否小于数组的长度。 这不检查空值或其他奇怪的情况下索引可以分配一个值,但没有明确给出。

你可以检查数组的长度,看看项25是否在arrays的意义上是有效的,那么你可以使用

 if (array.Length > 25) { if (array[25] != null) { //good } } 

查看数组项目本身是否已经设置。

这听起来很像你使用一个数组来存储不同的字段。 这绝对是一种代码味道。 我会尽量避免使用数组,因为它们在高级代码中通常不适合(或不需要)。

切换到一个简单的词典可能在短期内是一个可行的select。 正如将使用一个大的财产袋类。 有很多select。 现在的问题只是一个糟糕的devise的症状,你应该考虑解决根本问题,而不是仅仅修补不好的devise,所以目前大多数工作都是这样。