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

今、私の質問は、宣言した場合に以前のデータを失うことなく、新しい配列を挿入するにはどうすればよいですか

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 に答える