Dlaczego muszę wykonać ldarg.0 przed wywołaniem pola w MSIL?

Chcę wywołać funkcję, jako parametry astring i anInt32. Thestring jest po prostu dosłownyInt32 powinien byćfield. Pomyślałem, że powinno to być coś w stylu:

.method public hidebysig instance string TestVoid() cil managed
{
    .maxstack 1
    .locals init (
        [0] string CS i an0000)
    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 
}

Ale to powoduje błąd, że nie jest to prawidłowy kod. Podczas dodawania

ldarg.0 

przedldfld działa dobrze. Dlaczego tak się dzieje i czy to wpędza mnie w kłopoty, gdy mam więcej pól?

questionAnswers(1)

yourAnswerToTheQuestion