ldarg.0的作用是将方法的第0个参数压入堆栈,而实例的this指针总是第0个参数。所以ldarg.0的目的就是讲this压入栈关于只有入栈没有出栈的问题,你的理解有点问题,比如下面这三行
IL_0000: ldarg.0
IL_0001: ldc.i4.5
IL_0002: stfld int32 App.Class1::x第一第二句分别将this指针和整型5压入栈,调用stfld时,stfld需要两个参数:对象的指针和要被设置的值。所以stfld会把堆栈中的this指针和整形取出(出栈),然后将5赋值给this指针所指对象的成员x
IL_0000: ldarg.0
IL_0001: ldc.i4.5
IL_0002: stfld int32 App.Class1::x第一第二句分别将this指针和整型5压入栈,调用stfld时,stfld需要两个参数:对象的指针和要被设置的值。所以stfld会把堆栈中的this指针和整形取出(出栈),然后将5赋值给this指针所指对象的成员x
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货