2011-08-01 9 views

答えて

12

この場合は違いはありませんが、最初の構文はです。変数を宣言するときにはしか使用できません。 C#4仕様のセクションから12.6:

フィールド初期化子は、フィールド宣言、ローカル変数宣言、および配列作成式で指定できます。

(「配列初期化子は」ビットがブレースである - 。そして、配列生成式は、あなたがnew int[]を指定するか、どんな形で)

あなたはローカル変数やフィールドを宣言していません

Foo(new[] { 1, 2, 3}); 
2

違いはありません。彼らはどちらも同じです。

1
int[] array1; // declare array1 as an int array of any size 
array1 = new int[10]; // array1 is a 10-element array 
array1 = new int[20]; // now it's a 20-element array 

int[] array2 = new int[5] {1, 2, 3, 4, 5}; // declare array 2 as an int array of size 5 

はどちらも同じです:あなたは二番目の形式を使用する必要があり、またはC#3.0からあなたが暗黙的に型指定された配列を使用することができます(たとえば、あなたは、メソッドに引数を渡している場合)。 MSDN on initializing arraysを参照してください。

1

宣言中のと同じ行にイニシャライザを指定しているので、新しいオペレータを省略することができます。

//これはOK

INT [] i32Array = {1,2,3,4,5}です。

//これはNOT

int [] i32Array; i32Array = {1,2,3,4,5};

あなたの定義と開始は別のラインで発生した場合は、この

i32Array =新しいint型[] {1,2,3,4,5}を行う必要があります。

だから、技術的に言えば、初期化せずに配列変数を宣言することは可能ですが、あなたはこの変数

1

に配列を割り当てるときに両者はまったく同じ

見ているnew演算子を使用する必要があります。このコード:

int[] expr_07 = new int[] 
      { 
       1, 
       2, 
       3, 
       4 
      }; 
      int[] expr_19 = new int[] 
      { 
       1, 
       2, 
       3, 
       4 
      }; 

int[] arr1={1,2,3,4}; 
int[] arr2= new int[]{1,2,3,4}; 

反射器を使用して、両方の次に変換します

関連する問題