2011-06-12 45 views
5

有人可以描述什麼發生(從內存管理的角度來看)當一個常量在.net中的方法中定義時?方法中定義的常量的內存是多少?

+1

在運行時,它們存儲在堆內存中,因爲它們通過執行而不會被垃圾收集。 – 2011-06-12 04:08:55

回答

7

常量通常在編譯時解析並直接插入到指令序列中。例如:

const int A = 10; 
int b; 

int i = A + b; 

將有效地被編譯成:

int i = 10 + b; 

對於他們被拘留,並把在堆上的字符串。

1

當編譯器在C#源代碼中遇到一個常量標識符時,它會直接將文字值替換爲它生成的中間語言(IL)代碼,因爲在運行時沒有與常量關聯的變量地址。const字段無法傳遞通過引用,不能在表達式中顯示爲l值。有關更多信息,您可以在Msdn上查詢Constants

相關問題