2010-06-12 109 views

回答

8

你需要更具體一些。你想知道關於:

  • 在存儲器中的變量的大小保持該值
  • 的MSIL的大小來加載值到IL棧,因此它可以在表達
  • 大小來使用的MSIL的申報的保持值
  • 的MSIL的大小來聲明變量能夠保持上述值
  • 由運行時從MSIL生成的機器語言的大小的構件的局部變量能夠
  • 元數據的大小和調試信息與它相關聯
  • 別的東西?

在程序中出現的整數字面量出現的時候,會出現很多不同的「成本」,如(int)72。如果它是更大表達式的一部分,則在編譯時可能會發生簡化,從而文本的邊際運行時成本根本就沒有任何作用(除非調試器顯示更長的源代碼片段)。

+0

啊,關於語法的好處。現在太累了,我徹頭徹尾地忽略了這一點:| – Joey 2010-06-12 01:30:05

0

一段弦是多久?

它取決於您正在運行的處理器體系結構(甚至可能包括您使用的編譯器)。 This page解釋 - 並給你你的答案。

+3

幸運的是,在通用類型系統規範中,在所有體系結構和編譯器中,int都是32位。 – 2010-06-12 02:33:30

2

在大多數情況下,它會消耗堆棧中的4個字節。這是因爲int是在Common Type System (CTS)中映射到Int32的C#關鍵字。

如果必須裝盒,事情會變得更復雜一些。有關拳擊的解釋,請參閱this文章。盒裝值實際上在堆上消耗12個字節(至少在32位系統上); 4爲實際數據,4爲同步塊,4爲類型句柄或方法表。

所以問題不是那麼簡單。

相關問題