数组索引存在吗?
我在工作中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,所以目前大多数工作都是这样。