2010-06-12 72 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为类型句柄或方法表。

所以问题不是那么简单。

相关问题