2

次のコードを検討してください。

パブリックシールクラスプログラム
{{
    public static void Main()
    {{
        System.Console.WriteLine( "Hi");
    }
}

csc.exeでコンパイルした後、ILDasmを使用してアセンブリを開き、理解できないものを見つけました。

ILDasm「ショー!」コマンドは単一のTypeDef(「プログラム」クラス)のみを表示しますが、統計ビューでTypeDefカウントが2であることがわかります。

2番目のタイプがどこから来たのか考えていますか?

出典:ジェフリー・リッチターの39ページからの本「CLRviaC#」第3版。

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 に答える