包含数组到锯齿数组的类的数组
本文关键字:数组 包含 | 更新日期: 2023-09-27 18:11:38
我有一个像这样封装数组的类:
public class Data
{
public double[] buffer = new double[10];
}
然后我有一个Data
对象的数组:
Data[] arrayOfData = new Data[10];
从所有arrayOfData
对象中的所有缓冲区中获得锯齿数组double[][]
的最有效方法是什么?
您可以在这里简单地使用for
循环。只有两行代码:
Data[] arrayOfData = new Data[10];
double[][] allBuffers = new double[arrayOfData.Length][];
for(int i = 0; i < arrayOfData.Length; i++) allBuffers[i] = arrayOfData[i].buffer;
或者如果你喜欢用LINQ:
double[][] allBuffers = arrayOfData.Select(a => a.buffer).ToArray();
然而,这行代码的问题是LINQ有一组接口IEnumerable<T>
的扩展方法,因此它使用foreach
循环,比for
慢得多,广泛用于迭代集合而不是数组。
Linq是一个选项
double[][] result = arrayOfData.Where(x => x != null).Select(x => x.buffer).ToArray();
UPDATE:添加了一个null检查,因为Data
可以是null
,但double
不能