我有一个封装数组的类,如下所示:
public class Data
{
public double[] buffer = new double[10];
}然后我就有了一个Data对象数组:
Data[] arrayOfData = new Data[10];从所有arrayOfData对象的所有缓冲区中获取锯齿数组double[][]的最有效方法是什么?
发布于 2015-09-07 22:55:26
Linq将是一个选择
double[][] result = arrayOfData.Where(x => x != null).Select(x => x.buffer).ToArray();更新:添加了空检查,因为Data可以为null,但double不可以
发布于 2015-09-07 23:03:11
你可以在这里简单地使用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>的扩展方法,因此它使用比for慢得多的foreach循环,并且被广泛用于迭代集合而不是数组。
https://stackoverflow.com/questions/32441413
复制相似问题