2

考虑以下代码:

公共密封类程序
{
    公共静态无效 Main()
    {
        System.Console.WriteLine("嗨");
    }
}

用 csc.exe 编译后,我使用 ILDasm 打开程序集,发现了一些我无法弄清楚的东西:

ILDasm“表演!” 命令仅显示单个 TypeDef(“程序”类),但在统计视图中我可以看到 TypeDef 计数为 2。

知道第二种类型是从哪里来的吗?

资料来源:Jeffrey Richter 的书“CLR via C#”第 3 版第 39 页。

4

1 回答 1

3

使用 View + MetaInfo + Raw:Header,Schema,Rows。您将在节目中获得更多详细信息!倾倒。您现在将看到:

   1 == 0:00000000, 1:string#1, 2:string#0, 3:TypeDefOrRef[02000000], 4:Field[4000001], 5:Method[6000001]
   2 == 0:00100000, 1:string#22, 2:string#2a, 3:TypeDefOrRef[01000001], 4:Field[4000001], 5:Method[6000001]

注意第一个,令牌值 0。只是一个虚拟条目,它的意思是“不是类型”。这样做会使元数据解析器更容易,这样任何 typeref 令牌值在表中都有一个条目,并且不需要为 0 添加测试。

于 2012-07-12T11:50:32.803 回答