Array.Resizeメソッドを使うことで、配列の長さを変更することが出来ます。 このメソッドによってリサイズされるというのは見た目の動作で、実際には、変更後のサイズの配列が新たに作成され、その配列に元の配列の内容をコピーしたものが引数で指定した配列と置き換えられるという動作になります。 このメソッドでは、配列の長さを元の長さよりも短くすることも長くすることも可能です。 Array.Resizeメソッドで配列を拡張した場合、拡張した部分にはデフォルト値がセットされます。
Array.Resizeメソッドで配列をリサイズする
using System;
class Sample {
static void Main()
{
int[] arr = {0, 1, 2, 3, 4};
// 配列の長さを長くする
Array.Resize(ref arr, 7);
foreach (var elem in arr) {
Console.Write("{0}, ", elem);
}
Console.WriteLine();
// 配列の長さを短くする
Array.Resize(ref arr, 3);
foreach (var elem in arr) {
Console.Write("{0}, ", elem);
}
Console.WriteLine();
}
}
実行結果
0, 1, 2, 3, 4, 0, 0, 0, 1, 2,
ジャグ配列をリサイズすることも出来ますが、その場合は1段目の長さのみが変更できます。 2段目以降の長さを変更する場合は、格納されている配列に対して個別にArray.Resizeメソッドを呼び出してリサイズする必要があります。
なお、Array.Resizeメソッドでは多次元配列のサイズを変更することは出来ません。