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

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

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

      C#學習筆記(二):構造函數的執行序列

      2006-01-09 08:34  努力學習的小熊  閱讀(2151)  評論(9)    收藏  舉報

      任何構造函數都可以進行配置,以便在執行自己的代碼前調用其它構造函數。

      我們首先看看在創建類的實例時會發生什么情況。為了實例化派生的類,必須實例化它的基類。而要實例化這個基類,又必須實例化這個基類的基類,這樣一直實例化到System.Object為止。結果是無論使用什么構造函數實例化一個類,總是要先調用System.Object.Object()

      如果對一個類使用非默認的構造函數,默認的情況是在其基類上使用匹配于這個構造函數簽名的構造函數。如果沒有找到這樣的構造函數,就使用基類的默認構造函數(根類System.Object總是要使用默認的構造函數,因為這個類沒有非默認的構造函數)。

      我們以下面這個小代碼段例子作一些說明:

           public class MyBaseClass
           {
               public MyBaseClass()
               {
               }
       
               public MyBaseClass(int i)
               {
               }
           }
       
           public class MyDerivedClass : MyBaseClass
           {
               public MyDerivedClass()
               {
               }
       
               public MyDerivedClass(int i)
               {
               }
       
               public MyDerivedClass(int i, int j)
               {
               }
           }

      如果以下面的方式實例化MyDerivedClass

           MyDerivedClass myObj = new MyDerivedClass();

      則發生下面的一系列事件:
              1.執行System.Object.Object()構造函數。
          2.執行MyBaseClass.MyBaseClass()構造函數。
          3.執行MyDerivedClass.MyDerivedClass()構造函數。 

      如果使用下面的語句:

      MyDerivedClass myObj = new MyDerivedClass(4);

      則發生下面的—系列事件:
              1.執行System.Object.Object()構造函數。
          2.執行MyBaseClass.MyBaseClass(int i)構造函數。
          3.執行MyDerivedClass.MyDerivedClass(int i)構造函數。 

      如果使用下面的語句:

      MyDerivedClass myObj = new MyDerivedClass(4,8);

      則發生下面的—系列事件:
              1.執行System.Object.Object()構造函數。
          2.執行MyBaseClass.MyBaseClass()構造函數。
          3.執行MyDerivedClass.MyDerivedClass(int i, int j)構造函數。 

      有時需要對發生的事件進行更多的控制。例如,在上面的實例化范例中,需要有下面的事件序列:
              1.執行System.Object.Object()構造函數。
          2.執行MyBaseClass.MyBaseClass(int i)構造函數。
          3.執行MyDerivedClass.MyDerivedClass(int i, int j)構造函數。

      使用這個序列可以在編寫MyBaseClass(int i)中使用int i參數的代碼,即MyDerivedClass(int i, int j)構造函數要做的工作比較少,只需要處理int j參數(假定int i參數在兩種情況下有相同的含義)。我們僅需指定在派生類的構造函數定義中所使用的基類的構造函數,如下所示:

           public class MyDerivedClass : MyBaseClass
           {
                ……
               public MyDerivedClass(int i, int j) : base(i)
               {
               }
           }

      其中,base關鍵字指定.NET實例化過程,以使用基類中匹配指定簽名的構造函數。這個例子中使用一個int參數,所以在實例化序列中應調用MyBaseClass(int i)

      同時我們也可以使用這個關鍵字指定基類構造函數的字面值。

           public class MyDerivedClass : MyBaseClass
           {
               public MyDerivedClass() : base(5)
               {
               }
               ……
           }

      這段代碼將執行以下序列:
              1.執行System.Object.Object()構造函數。
          2.執行MyBaseClass.MyBaseClass(int i)構造函數。
          3.執行MyDerivedClass.MyDerivedClass()構造函數。 

      下面我們介紹另一個關鍵字this。這個關鍵字指定在調用指定的構造函數前,.NET實例化過程對當前類使用非默認的構造函數。

           public class MyDerivedClass : MyBaseClass
           {
               public MyDerivedClass() : this(5,6)
               {
               }
               ……
               public MyDerivedClass(int i, int j) : base(i)
               {
               }
           }

      這段代碼將執行以下序列:
              1.執行System.Object.Object()構造函數。
          2.執行MyBaseClass.MyBaseClass(int i)構造函數。
          3.執行MyDerivedClass.MyDerivedClass(int i,int j)構造函數。
          4.執行MyDerivedClass.MyDerivedClass()構造函數。 

      唯一的限制是使用thisbase關鍵字只能指定一個構造函數。但是如上所示,這并不是一個很嚴厲的限制,按照上述方式仍可以構造相當復雜的執行序列。

      主站蜘蛛池模板: 亚洲成在人天堂一区二区| 九九热在线视频观看这里只有精品| 办公室强奷漂亮少妇视频| 一区二区三区精品不卡| 国产激情文学亚洲区综合| aⅴ精品无码无卡在线观看| 国产超碰无码最新上传| 久久精品国产色蜜蜜麻豆| 亚洲免费福利在线视频| 亚洲av成人一区二区三区| 毛片免费观看天天干天天爽| 在线 欧美 中文 亚洲 精品| 国产精品久久毛片| 亚洲一精品一区二区三区| 日本亚洲一区二区精品久久| 久久久久久久久毛片精品| 久久综合97丁香色香蕉| 欧美日韩国产码高清| 亚洲 中文 欧美 日韩 在线| 国偷自产一区二区三区在线视频| 狠狠色丁香婷婷久久综合五月| 亚洲熟妇自偷自拍另欧美| 40岁大乳的熟妇在线观看| 久久天天躁狠狠躁夜夜躁2012| 亚洲另类激情专区小说图片 | 国产成人精品1024免费下载| 国产高清精品一区二区三区| 思思热在线视频精品| 亚洲爆乳成av人在线视菜奈实 | 日本阿v片在线播放免费| 聂拉木县| 国产亚洲人成网站在线观看| 日日噜噜夜夜狠狠视频| 国产精品中文字幕观看| 啊灬啊灬啊灬快灬高潮了电影片段| 国产精品黄在线观看免费| 国产sm重味一区二区三区| 久久中文字幕无码一区二区| 精品人妻av综合一区二区| 国产高潮又爽又刺激的视频| 日本污视频在线观看|