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

时间:2009-05-14 07:02:29

标签: .net types

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

3 个答案:

答案 0 :(得分:7)

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

我写过an article about it,其中详细介绍了我在此重复的内容。简单的解释,例如经常重复的“值类型存在于堆栈中,引用类型存在于堆上”是非常有缺陷的,引用类型中int变量的明显反例 - 该变量的值将是始终存储在堆上,即使int是值类型。

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

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

如果不是您打算提出的问题,请澄清一下。例如,你的意思是:

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

答案 1 :(得分:0)

所有核心CTS类型,如Int16,Int32,Int64,String,Byte等,都在MSCorLib.dll中定义。该文件可以在C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727目录中找到。

所有其他特殊用途类型和类都存储在各自的FCL [Framework Class Library]程序集中。与Windows窗体开发相关的所有类型都可以在System.Windows.Form。 .dll中找到,所有与web / asp.net开发相关的类型都在System.Web。 .dll中定义。您可以在本地计算机的GAC中找到这些和相关的程序集。

答案 2 :(得分:-1)

它们被“存储”在各种dll中。