迭代数组-仅包含值的数组单元格

时间:2018-07-15 08:35:12

标签: c# arrays loops

在c#中迭代(说10个单元格)数组的方法是什么,其中仅前四个填充了值,而避免遍历其余6个?

我可以为索引保留一个int值,并在每个数组添加/删除操作中对其进行修改, 但是想知道c#是否具有内置(高效)功能来实现这一目标。

谢谢。

4 个答案:

答案 0 :(得分:4)

据您所知,您有2个表演者选项

一个for循环,缺点是您每次迭代都要检查条件

$sudo apt update && sudo apt-get install -y libopenblas-dev
$git clone -b 1.0 --depth 1 https://github.com/BVLC/caffe.git . && \
    pip install --upgrade pip && \
    cd python && pip install -r requirements.txt && cd .. && \
    mkdir build && cd build && \
    cmake -DCPU_ONLY=1 -DBLAS=open .. && \
    make -j"$(nproc)"

但是,如果这确实对任务至关重要,则您必须保留一个列表(或范围的索引),该列表的更新速度较慢,迭代速度较快

如果要提高性能,请使用for(var i = 0; ary[i] != null & i < length; i++) { } fixed

答案 1 :(得分:1)

是的,您可以使用内置的TakeWhile方法:

  var result = Array.TakeWhile(item => item != string.IsNullOrEmpty(item)); 

  foreach (int value in result)
  {
     Console.WriteLine(value);
  }

答案 2 :(得分:1)

您可以使用列表,然后将其转换为数组

List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(5);
int[] arr = list.ToArray();

int sum = 0;
foreach (int value in arr)
{
   sum += value;
}

答案 3 :(得分:0)

我会使用Lambda表达式来做类似的事情。 我做了一个小控制台应用程序。 因此它会检查空值,并且length <0也是空值,然后就不会迭代

它不会与IndexOutOfRangeException崩溃,就像接受的答案一样

int?[] array = { 6, null, 4, 3, null, };
array.Where(t => t != null).ToList().ForEach(t => Console.WriteLine(t));
Console.ReadLine();