在c#中迭代(说10个单元格)数组的方法是什么,其中仅前四个填充了值,而避免遍历其余6个?
我可以为索引保留一个int值,并在每个数组添加/删除操作中对其进行修改, 但是想知道c#是否具有内置(高效)功能来实现这一目标。
谢谢。
答案 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();