2011-08-01 136 views

回答

12

在這種情況下沒有區別 - 但第一種語法是只有可用於聲明變量。從C#4規範部分12.6:

可以在字段聲明,局部變量聲明和數組創建表達式中指定數組初始值設定項。

(以下簡稱「數組初始化」是在括號中的比特 - 和數組創建表達式中,可以指定new int[]或任何形式)。

當你不聲明一個局部變量或字段(例如,如果你傳遞一個參數的方法),你必須使用第二個形式中,或從C#3.0可以使用一個隱式類型數組:

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 

兩者都是相同的。請參閱MSDN on initializing arrays

1

由於您在聲明的同一行中提供了初始化程序,因此您可以省略新的操作符。

//這是行

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

//這是不是

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

如果你的定義,並開始在不同的線路發生了,你將不得不這樣做

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

所以,從技術上講,它可以聲明數組變量不用初始化,但是當你將數組分配給這個變量

1

將必須使用新的運營商都是一模一樣的

外觀此代碼:

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

使用反射器中的兩個轉換爲下面:

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