<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Refresher of IL explains "this pointer" in C#

      這篇文章里,用il語言解釋一下static方法和non-static方法在調(diào)用的時候,堆棧頂部傳遞參數(shù)的不同形式。
      首先看一段代碼:
       class TestClass
          {
              public static readonly int i = 10;
              static void Main(string[] args)
              {           
                  TestClass testClass = new TestClass();
                  TestStatic();
                  testClass.NonStatic();
              }

              public static void TestStatic()
              {
              }

              public void NonStatic()
              {
              }
          }

      反編譯以后得到:
      .method private hidebysig static void  Main(string[] args) cil managed
      {
        .entrypoint
        // Code size       21 (0x15)
        .maxstack  1
        .locals init ([0] class TestConcoleApp.TestClass testClass)
        IL_0000:  nop
        IL_0001:  newobj     instance void TestConcoleApp.TestClass::.ctor()
        IL_0006:  stloc.0
        IL_0007:  call       void TestConcoleApp.TestClass::TestStatic()
        IL_000c:  nop
        IL_000d:  ldloc.0
        IL_000e:  callvirt   instance void TestConcoleApp.TestClass::NonStatic()
        IL_0013:  nop
        IL_0014:  ret
      } // end of method TestClass::Main

      首先,關(guān)于this pointer,可以參考ibm的文檔:
      http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.xlcpp8a.doc/language/ref/cplr035.htm

      注意藍色的這一行。這一行說明了一個問題,在使用static方法和non-static方法的時候,static方法并不pass this pointer到stack中去。而non-static方法確需要傳遞一個instance的reference到stack中去。

      因為,在
        IL_0001:  newobj     instance void TestConcoleApp.TestClass::.ctor()
        IL_0006:  stloc.0

      指令中,存儲了新實例化的一個變量到loc.0中去了,然后在調(diào)用static方法的時候,堆棧的頂部是沒有obj的reference的。而調(diào)用non-static方法的時候,需要傳遞一個obj的reference到堆棧的頂部去。

      如果大家想繼續(xù)深入了解為什么static方法不需要傳遞一個obj的reference,可以參考compile time 和 run time的區(qū)別,下面是一篇ibm的文檔:
      http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=/com.ibm.xlcpp8l.doc/proguide/ref/cvfltar.htm

      posted on 2007-11-19 14:02  lbq1221119  閱讀(1617)  評論(4)    收藏  舉報

      導(dǎo)航

      主站蜘蛛池模板: 国产日韩综合av在线| 不卡无码人妻一区三区音频| 人妻无码中文字幕| 国产精品免费无遮挡无码永久视频| 亚洲欧美电影在线一区二区| 狠狠躁天天躁中文字幕无码| 熟女人妇 成熟妇女系列视频| 午夜精品亚洲一区二区三区| 虎白女粉嫩尤物福利视频| 国产av中文字幕精品| 国产玖玖玖玖精品电影| 大伊香蕉精品一区二区| 国产一区二区三区我不卡| 国产精品无码dvd在线观看| 国产精品一区二区三区91| 日韩中文字幕精品人妻| 亚洲人成网线在线播放VA| 人妻少妇久久久久久97人妻| 日本免费精品| 欧美人与动交视频在线观看| 精品久久久久久无码专区不卡| 亚洲中文一区二区av| 中国女人高潮hd| 无码国模国产在线观看免费| 亚洲高清国产成人精品久久| 国产亚洲精品在天天在线麻豆| 广灵县| 国产最新AV在线播放不卡| 日韩人妻少妇一区二区三区 | 一本久久a久久精品综合| 精品国产中文字幕在线看| 国产色精品久久人妻| 亚洲中文字幕一区二区| 国色天香成人一区二区| 强奷漂亮人妻系列老师| 亚洲人成网站77777在线观看| 国产亚洲精品VA片在线播放| 黑人巨大AV在线播放无码| 久操热在线视频免费观看| 在线欧美精品一区二区三区| 久久美女夜夜骚骚免费视频|