Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#动态多维数组_C#_Multidimensional Array_Labview - Fatal编程技术网

C#动态多维数组

C#动态多维数组,c#,multidimensional-array,labview,C#,Multidimensional Array,Labview,我有一个功能 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[,]”不是动态的,我不知

我有一个功能

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[,]”不是动态的,我不知道数组的最终大小。我可以从中创建一个列表,并将新行添加到列表中,但我似乎无法将其转换回双精度[,]。ToArray()想要输出锯齿状数组(double[][])。这行不通。我正在与LabVIEW开发的程序进行接口,LV拒绝接受锯齿阵列。LV对固定数组([,])很满意


有什么帮助吗?

您可以随时手动创建二维数组:

double[,] array = new double[list.Count, data.Length];
for(int i = 0;i < list.Count;++i)
    for(int j = 0;j < data.Length;++j)
        array[i, j] = list[i][j];
double[,]数组=新的double[list.Count,data.Length];
对于(int i=0;i

当然,也就是说,假设所有的“dataToAdd”都具有相同的长度。否则,对于未使用的元素,在数组中填充什么?

您始终可以手动创建二维数组:

double[,] array = new double[list.Count, data.Length];
for(int i = 0;i < list.Count;++i)
    for(int j = 0;j < data.Length;++j)
        array[i, j] = list[i][j];
double[,]数组=新的double[list.Count,data.Length];
对于(int i=0;i
当然,也就是说,假设所有的“dataToAdd”都具有相同的长度。否则,对于未使用的元素,在数组中填充什么?

您可以尝试以下方法:

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;
}
private double[,]AddToArray(double[,]数组,double[]数据添加)
{
var dim0=array.GetLength(0);
var dim1=array.GetLength(1);
如果(dim1!=dataToAdd.Length)抛出新的ArgumentException();
var na=新的双精度[dim0+1,dim1];
Array.Copy(Array,na,Array.Length);
对于(var i=0;i
它显式地将高阶维度增加1,并验证低阶维度的长度是否等于
dataToAdd
数组。我无法从
数据向2D阵列添加比通过
for
循环更智能的拷贝;无法应用
数组。请为不同排名的数组复制

您可以尝试以下操作:

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;
}
private double[,]AddToArray(double[,]数组,double[]数据添加)
{
var dim0=array.GetLength(0);
var dim1=array.GetLength(1);
如果(dim1!=dataToAdd.Length)抛出新的ArgumentException();
var na=新的双精度[dim0+1,dim1];
Array.Copy(Array,na,Array.Length);
对于(var i=0;i
它显式地将高阶维度增加1,并验证低阶维度的长度是否等于
dataToAdd
数组。我无法从
数据向2D阵列添加比通过
for
循环更智能的拷贝;无法应用
数组。请为不同排列的数组复制