खैर कहते हैं कि हम इस ग # कोड प्राप्त हो जाता है:MSIL प्रश्न (बेसिक)
public override void Write(XDRDestination destination)
{
destination.WriteInt(intValue);
destination.WriteBool(boolValue);
destination.WriteFixedString(str1, 100);
destination.WriteVariableString(str2, 100);
}
आईएल:।
.method public hidebysig virtual instance void
Write(class [XDRFramework]XDRFramework.XDRDestination destination) cil managed
{
// Code size 53 (0x35)
.maxstack 8
IL_0000: ldarg.1
IL_0001: ldarg.0
IL_0002: call instance int32 LearnIL.Test1::get_intValue()
IL_0007: callvirt instance void [XDRFramework]XDRFramework.XDRDestination::WriteInt(int32)
IL_000c: ldarg.1
IL_000d: ldarg.0
IL_000e: call instance bool LearnIL.Test1::get_boolValue()
IL_0013: callvirt instance void [XDRFramework]XDRFramework.XDRDestination::WriteBool(bool)
IL_0018: ldarg.1
IL_0019: ldarg.0
IL_001a: call instance string LearnIL.Test1::get_str1()
IL_001f: ldc.i4.s 100
IL_0021: callvirt instance void [XDRFramework]XDRFramework.XDRDestination::WriteFixedString(string,
uint32)
IL_0026: ldarg.1
IL_0027: ldarg.0
IL_0028: call instance string LearnIL.Test1::get_str2()
IL_002d: ldc.i4.s 100
IL_002f: callvirt instance void [XDRFramework]XDRFramework.XDRDestination::WriteVariableString(string,
uint32)
IL_0034: ret
} // end of method Test1::Write
अब सवाल का मैं समझता हूँ कि ldarg है # तर्कों को आपूर्ति डालता है ढेर पर विधि ताकि हम उनके साथ काम कर सकें? लेकिन यह विधि ldarg.1 और ldarg.0 क्यों कॉल करता है जब विधि केवल एक तर्क लेती है?
क्या आप अपना उत्तर थोड़ा बढ़ा सकते हैं? यकीन है कि पहला यह है लेकिन इस मामले में पहला ldarg.1 या ldarg.0 है? – Peter