2012-07-13 48 views

回答

6

這兩者之間沒有區別。

第一個只是一個語法糖(MSDN)來節省幾個擊鍵。

它們都(只要兩個是相同的數組)在堆中聲明,並且引用在堆棧中聲明。所以只要你超出範圍 - 所以對象變得沒有參考並且有資格被垃圾收集。

+1

語言現在好多了;) – 2012-07-13 00:25:55

6

實際上有一種方法來存儲陣列中的堆棧:

(來自http://www.c-sharpcorner.com/uploadfile/GemingLeader/creating-a-stack-based-array/

int* pArr = stackalloc int[length]; 

但是這需要一個不安全的代碼區域中,由於使用指針的。

+4

有趣的..不是直接的答案。 – 2012-07-13 00:15:33

+0

是的,不是一個直接的答案......我認爲這可能是有用的,如果他正在尋找一種方法來做堆棧分配。 – sukru 2012-07-13 00:19:14

0

你應該沒有做。 :)
「正確」 的聲明將是

int[] a = ... 
+0

它是有效的語法:http://ideone.com/dO2PT。事實上,這是令人困惑的,但仍然有效 – zerkms 2012-07-13 00:15:56

+3

-1不知道爲什麼這得到了upvote。不回答這個問題,因爲你似乎沒有意識到,C#在這方面不是空白敏感的。 – 2012-07-13 00:23:10

+2

我沒有說這是無效的。我說這是不正確的,它是。已經有很好的答案覆蓋了OP的其他問題,所以我忽略了這一點,但回答了可能更重要的部分。 – Coxy 2012-07-13 03:53:26

1

你語法將在堆聲明爲int爲值類型

INT [] A = {1,2,3,4,5 }這個語法是另一個的簡略速記