25

stringパラメータとして aおよび anを使用して、関数を呼び出したいと思いますInt32stringは単なるリテラルです。 は である必要Int32がありfieldます。だから私はそれが次のようなものであるべきだと思った:

.method public hidebysig instance string TestVoid() cil managed
{
    .maxstack 1
    .locals init (
        [0] string CS$1$0000)
    L_0000: nop 
    L_0001: ldstr "myString"
    L_0006: ldfld int32 FirstNamespace.FirstClass::ByteField
    L_000b: call string [Class1]Class1.TestClass::Functie<int32>(string, int32)
    L_0010: ret 
}

しかし、これは有効なコードではないというエラーをスローします。追加時

ldarg.0 

ldfldうまく動く前に。これはなぜですか? また、フィールドが増えると問題が発生するのでしょうか?

4

1 に答える 1

42

インスタンス メソッドには、"this" という暗黙のパラメーターがあります。これはスタックの最初の引数としてロードされるため、「this」には ldarg.0 があります。

于 2009-11-23T19:25:43.717 に答える