.Net数据类型存储在哪里?

Bha*_*kar 1 .net types

.Net数据类型存储在哪里?

Jon*_*eet 7

如果你的意思是"数据存储在内存中 - 在堆栈上或堆上",它会变得非常复杂,部分取决于语言.

我写了一篇关于它的文章,这篇文章比我在这里重复的更详细.简单的解释,例如经常重复的"值类型存在于堆栈中,引用类型存在于堆上"是非常有缺陷的,具有int引用类型中变量的明显反例 - 该变量的值将始终存储在堆,即使int是值类型.

但是,你也应该明智地阅读Eric Lippert 关于此事博客文章 - 这是一个实施问题,开发人员往往对此过于担心.C#团队可以决定在更高版本中更改所有内容,并创建一个包含所有局部变量的新对象(而不仅仅是捕获的局部变量).

不可否认,这是一个重要的实现细节 - 你在堆栈上放多少会影响堆栈的深度等等 - 但我们可能应该花很多时间去思考它.

如果这不是您想要提出的问题,请澄清一下.例如,你可能意味着:

  • 类型元数据在执行时存在于何处?
  • BCL类型存储在磁盘上的哪个位置?
  • JIT编译的类型代码在哪里存在,是否存储?