2009-05-19 9 views
5

C#で動的に配列を作成するにはどうすればよいですか?Cで配列を動的に作成する

+3

これはどういう意味ですか?あなたが試しているものの疑似コードを表示してください。 – shahkalpesh

+1

配列のサイズを変更することができるはずですか? – blitzkriegz

答えて

1

また、単に他のオブジェクトタイプと同様new演算子を使用することができます

int[] array = new int[5]; 

または、変数を持つ:

int[] array = new int[someLength]; 
+7

これはかなり動的ではありませんか? –

+0

どうしてですか?そこではリテラル5の代わりに変数を使うことができます。 –

+0

が定義されていれば、5つ以上の項目を追加するためにはアレイを再起動する必要があります – Natrium

8

最初にarraylistを作成します。アイテムを追加/削除します。そして、ArrayList.ToArray()

あなたの配列があります!

3
object foo = Array.CreateInstance(typeof(byte), length); 
21

これは、ジェネリックコレクションでもこの.ToArray()メソッドもサポートされているというナショナルの答えに加えたいと思います。

List<string> stringList = new List<string>(); 
stringList.Add("1"); 
stringList.Add("2"); 
stringList.Add("3"); 
string[] stringArray = stringList.ToArray(); 
+1

メモは、ToArray()を内部的にサポートしているため、リストは不変の配列を使用して単純なものであり、必要に応じて新しい割り当てでそれを拡張しています。 –

-1

使用ジェネリックリストまたはArrayListのを。

4

だから、アレイの初期化は毎回になる。私はこの権利をするのに10分かかりました。

static void Main(string[] args) 
    { 
     String[] as1 = new String[] { "Static", "with", "initializer" }; 
     ShowArray("as1", as1); 

     String[] as2 = new String[5]; 
     as2[0] = "Static"; 
     as2[2] = "with"; 
     as2[3] = "initial"; 
     as2[4] = "size"; 
     ShowArray("as2", as2); 

     ArrayList al3 = new ArrayList(); 
     al3.Add("Dynamic"); 
     al3.Add("using"); 
     al3.Add("ArrayList"); 
     //wow! this is harder than it should be 
     String[] as3 = (String[])al3.ToArray(typeof(string)); 
     ShowArray("as3", as3); 

     List<string> gl4 = new List<string>(); 
     gl4.Add("Dynamic"); 
     gl4.Add("using"); 
     gl4.Add("generic"); 
     gl4.Add("list"); 
     //ahhhhhh generic lubberlyness :) 
     String[] as4 = gl4.ToArray(); 
     ShowArray("as4", as4); 
    } 

    private static void ShowArray(string msg, string[] x) 
    { 
     Console.WriteLine(msg); 
     for(int i=0;i<x.Length;i++) 
     { 
      Console.WriteLine("item({0})={1}",i,x[i]); 
     } 
    } 
-1
int[] array = { 1, 2, 3, 4, 5}; 

for (int i=0;i<=array.Length-1 ;i++) { 
    Console.WriteLine(array[i]); 
}