1

你好,我会非常感谢任何帮助。

好的,让我们看看,首先我声明了一个像这样的锯齿状数组和下一个代码

int n=1, m=3,p=0;

int[][] jag_array =new[n];

现在我的锯齿状数组内部将有 1 个数组,接下来你必须像这样填充数组:

car=2;
do
     {
     jag_array[p]= new double[car];
     for (int t = 0; t < carac; t++)
          {
           jag_array[p][t] = variableX;
          }
     p=p+1
     }
 while(p==0)

现在我的锯齿状数组看起来像这样(也为此示例插入一些数据):

jag_array[0][0]=4
jag_array[0][1]=2

现在我的问题是,如果我声明,我如何插入一个新数组而不会丢失我的 previos 数据

jag_array[p+1]= new double[car];

我会丢失之前的数据,我希望看起来像这样:

jag_array[0][0]=4
jag_array[0][1]=2
jag_array[1][0]=5
jag_array[1][1]=6

我没有从一开始就声明 2 数组的原因是因为我不知道我要使用多少它可能只是 1 或 20 并且每次我必须创建一个新数组而不会丢失之前已经存在的数据填写,谢谢大家的关注,

4

1 回答 1

2

数组的大小,一旦创建,根据定义是不变的。如果您需要可变数量的元素,请使用List<T>- 在您的情况下,可能是List<int[]>.

唯一的替代解决方案是创建一个具有新大小的新数组(并将其分配给您的jag_array变量)并将旧数组中的所有先前元素复制到新数组中。当您可以使用时,这是不必要的复杂代码,但如果您因任何原因List<T>无法使用,这里有一个示例:List<T>

// increase the length of jag_array by one
var old_jag_array = jag_array; // store a reference to the smaller array
jag_array = new int[old_jag_array.Length + 1][]; // create the new, larger array
for (int i = 0; i < old_jag_array.Length; i++) {
    jag_array[i] = old_jag_array[i]; // copy the existing elements into the new array
}
jag_array[jag_array.Length - 1] = ... // insert new value here
于 2012-08-01T20:26:29.500 回答