VBではお馴染みの配列の要素数を動的に変更する Redim ステートメント。
C#では残念ながら直接これに相当するものは無いようです。
それを次のようにして実現してみます。
string[] strAry = {"a","b","c"};
string[] temp;
temp = new string[strAry.Length + 1];
strAry.CopyTo(temp,0);
strAry = temp;
strAry[strAry.Length - 1] = "d";
動的に Length を変えるなら、配列ではなく、ArrayList を用いるもの1つの手です。
ただ、ArrayList に格納される値は Object 型なので、参照するときはキャストする必要があります。
(.NET Framework 2.0 では型を指定できる ArrayList が登場するとかしないとか・・・2004年9月現在)
2006.05.05 追記
→System.Collections.Genericクラスに実装されています。
System.Collections.Generic.List<int> myIntList = new System.Collections.Generic.List<int>();
myIntList.Add(2);
また、System.ArrayクラスにResizeメソッドが追加され、配列の次元を動的に変更することができるようになりました。
class Program
{
static void Main(string[] args)
{
int[] myArray = {3, 2, 6, 8};
Console.WriteLine("myArray.Length = {0}", myArray.Length);
for(int i=0; i < myArray.Length; i++)
Console.WriteLine("myArray[{0}] = {1}", i, myArray[i].ToString());
Console.WriteLine(string.Empty);
System.Array.Resize(ref myArray, 6);
myArray[4] = 100;
myArray[5] = 101;
Console.WriteLine("myArray.Length = {0}", myArray.Length);
for (int i = 0; i < myArray.Length; i++)
Console.WriteLine("myArray[{0}] = {1}", i, myArray[i].ToString());
}
}
これを実行すると以下のようになります。
myArray.Length = 4
myArray[0] = 3
myArray[1] = 2
myArray[2] = 6
myArray[3] = 8
myArray.Length = 6
myArray[0] = 3
myArray[1] = 2
myArray[2] = 6
myArray[3] = 8
myArray[4] = 100
myArray[5] = 101