簡體   English   中英

這兩個數組聲明有什么區別?

[英]What is difference between these two array declarations?

看來這兩個聲明是一樣的:

int[] array1 = {11, 22, 33};

int[] array2 = new int[] {11, 22, 33};

但是第二個樣本中這部分new int[]的需求是什么?
它有所不同嗎?

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

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

(“數組初始值設定項”是大括號中的位 - 數組創建表達式是指定new int[]或其他內容的形式。)

當你沒有聲明局部變量或字段時(例如,如果你將參數傳遞給方法)你必須使用第二種形式,或者從C#3.0你可以使用隱式類型的數組:

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

沒有區別。 它們都是一樣的。

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。

由於您在聲明的同一行中提供初始化程序因此您可以省略new運算符。

// 還行吧

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

// 這不是

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

如果你的定義和啟動發生在不同的行,你將不得不這樣做

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

因此,從技術上講,可以在沒有初始化的情況下聲明數組變量,但是在為此變量分配數組時必須使用new運算符

兩者完全相同

看這個代碼:

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
            };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM