C# 以下各项占用多少存储空间?

C# 以下各项占用多少存储空间?,c#,integer,storage,C#,Integer,Storage,这是我们在C班讨论的一个问题。我说的是2个字节,其他人说由于整数类型,它使用32位或4个字节。哪个是正确的 你需要更具体一些。您是否想知道: 内存中保存该值的变量的大小 将该值加载到IL堆栈以便在表达式中使用的MSIL的大小 用于声明能够保存该值的局部变量的MSIL的大小 用于声明能够保存该值的成员变量的MSIL的大小 运行时从MSIL生成的机器语言的大小 元数据的大小以及与之关联的调试信息 还有别的吗 整数文本的出现有很多不同的“代价”,例如程序中出现的(int)72。如果它是更大表达式的

这是我们在C班讨论的一个问题。我说的是2个字节,其他人说由于整数类型,它使用32位或4个字节。哪个是正确的

你需要更具体一些。您是否想知道:

  • 内存中保存该值的变量的大小
  • 将该值加载到IL堆栈以便在表达式中使用的MSIL的大小
  • 用于声明能够保存该值的局部变量的MSIL的大小
  • 用于声明能够保存该值的成员变量的MSIL的大小
  • 运行时从MSIL生成的机器语言的大小
  • 元数据的大小以及与之关联的调试信息
  • 还有别的吗

整数文本的出现有很多不同的“代价”,例如程序中出现的
(int)72
。如果它是更大表达式的一部分,则可能会在编译时进行简化,从而使文本的边际运行时成本完全为零(除了用于显示较长源代码片段的调试器)。

一段字符串有多长


这取决于您运行的处理器体系结构(甚至可能是您使用的编译器)。解释-并给出您的答案。

在大多数情况下,它将消耗堆栈上的4个字节。这是因为
int
是映射到中
Int32
的C#关键字

如果必须装箱,事情会变得更复杂一些。有关拳击的解释,请参阅文章。装箱值实际上会在堆上消耗12个字节(至少在32位系统上);4表示实际数据,4表示同步块,4表示类型句柄或方法表


所以问题并不是那么简单。

啊,关于语法的观点很好。现在太累了,我完全忽略了这一点:|幸运的是,在通用类型系统规范中,
int
在所有体系结构和编译器上都是32位的。
int 72