请考虑以下代码:
public sealed class Program { public static void Main() { System.Console.WriteLine("Hi"); } }
使用csc.exe编译后,我使用ILDasm打开程序集,发现了一些我无法弄清楚的内容:
ILDasm“Show!”命令只显示单个TypeDef(“程序”类),但在统计视图中,我可以看到TypeDef计数为2。
知道第二种类型来自何处?
资料来源:Jeffrey Richter第39页“CLR via C#”第3版。
答案 0 :(得分:3)
使用View + MetaInfo + Raw:标题,架构,行。您将在Show中获得更多细节!倾倒。你现在可以看到:
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添加测试。