[英]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.