我有一个功能...
private double[,] AddToArray(double[,] array, double[] dataToAdd)
{
// Make a new row at the end of 'array' and copy values
// from 'dataToAdd' into the new row.
//
// Return the new, modified array.
}
然而 'double[]' 不是动态的,我不知道数组的最终大小是多少。我可以从中创建一个列表并将新行添加到列表中,但随后我似乎无法将其转换回 double[]。 List.ToArray() 想要输出一个锯齿状数组 (double[][])。这行不通。我正在与 LabVIEW 开发的程序交互,但 LV 拒绝接受锯齿状数组。 LV 对固定数组 ([]) 感到满意。
有什么帮助吗?
你可以试试这个:
private double[,] AddToArray(double[,] array, double[] dataToAdd)
{
var dim0 = array.GetLength(0);
var dim1 = array.GetLength(1);
if (dim1 != dataToAdd.Length) throw new ArgumentException();
var na = new double[dim0 + 1, dim1];
Array.Copy(array, na, array.Length);
for (var i = 0; i < dim1; ++i) na[dim0, i] = dataToAdd[i];
return na;
}
它显式地将高阶维度加一,并验证低阶维度的长度是否等于dataToAdd
大批。我无法进行任何更智能的复制dataToAdd
到二维数组而不是for
环形;无法申请Array.Copy
对于不同的排序数组。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)