在C#,當我聲明一個這樣的數組:是一個聲明如下的數組:int [] a = {numbers ...};在堆棧中?
int []a = {1, 2, 3, 4, 5}
被這個堆棧中的聲明?
從我所知道的,我應該這樣做:
int []a = new int[5]{1, 2, 3, 4, 5};
考慮到數組是引用類型。
在C#,當我聲明一個這樣的數組:是一個聲明如下的數組:int [] a = {numbers ...};在堆棧中?
int []a = {1, 2, 3, 4, 5}
被這個堆棧中的聲明?
從我所知道的,我應該這樣做:
int []a = new int[5]{1, 2, 3, 4, 5};
考慮到數組是引用類型。
這兩者之間沒有區別。
第一個只是一個語法糖(MSDN)來節省幾個擊鍵。
它們都(只要兩個是相同的數組)在堆中聲明,並且引用在堆棧中聲明。所以只要你超出範圍 - 所以對象變得沒有參考並且有資格被垃圾收集。
語言現在好多了;) – 2012-07-13 00:25:55
實際上有一種方法來存儲陣列中的堆棧:
(來自http://www.c-sharpcorner.com/uploadfile/GemingLeader/creating-a-stack-based-array/)
int* pArr = stackalloc int[length];
但是這需要一個不安全的代碼區域中,由於使用指針的。
有趣的..不是直接的答案。 – 2012-07-13 00:15:33
是的,不是一個直接的答案......我認爲這可能是有用的,如果他正在尋找一種方法來做堆棧分配。 – sukru 2012-07-13 00:19:14
你語法將在堆聲明爲int爲值類型
INT [] A = {1,2,3,4,5 }這個語法是另一個的簡略速記
但是爲什麼它很重要?語境? – 2012-10-04 13:54:49