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

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

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

      再談重載與覆寫

      昨天我在新手區發了一篇《重載還是覆寫?》的隨筆,后來我發現我犯了一個嚴重的錯誤,沒有具體說明是.NET 1.1還是2.0,在.NET2.0中由于泛型的出現,對重載和覆寫有時候就不能按照1.1下那幾個特征去要求。

      1.重載(Overload

      .NET1.1下,我們定義重載:類中定義的方法可能有不同的版本,它具有如下的特征:

      I.           方法名必須相同

      II.         參數列表必須不相同,與參數列表的順序無關

      III.       返回值類型可以不相同

      示意代碼:

      public class MyClass
      {
          
      public void Write(string _str)
          

              
      //
          }

          
      public void Write(string _str, string _target)
          

              
      //
          }

          
      public bool Write(string _str, string _target, bool _flag)
          

              
      //
          }

      }

      .NET2.0下,由于泛型的出現,我們就不能再用這三個特征來判斷重載,如下面的兩個方法,它們具有相同的方法名,相同的參數列表,相同的返回值,但是它們卻可以構成重載:

      public class MyClass
      {
          
      public void Write<T>(string _str)
          

              
      //
          }

          
      public void Write(string _str)
          

              
      //
          }

      }

      再看下面這兩個方法,它們不能構成重載,因為如果TU如果實例化時傳入相同的類型,則這兩個方法就具有相同的簽名:

      public class MyClass8<T,U>
      {
          
      public T MyMothed(T a, U b)
          
      {
              
      return a;
          }

          
      public U MyMothed(U a, T b)
          
      {
              
      return b;
          }

      }

      但是當我們再添加另外一個方法后,這個類卻可以編譯通過:

      public class MyClass8<T,U>
      {
          
      public T MyMothed(T a, U b)
          
      {
              
      return a;
          }

          
      public U MyMothed(U a, T b)
          
      {
              
      return b;
          }

          
      public int MyMothed(int a, int b)
          
      {
              
      return a + b;
          }

      }

      通過調用可以發現,優先匹配的方法是一般方法,而非泛型方法。總之,構成重載的第二個特征參數列表必須不同,其實是讓方法具有不同的簽名,調用程序可以區分,在有泛型時要特別注意,而第一點和第三點仍然適用。

      2.覆寫(Override

      .NET1.1下,對覆寫我們的定義是:子類中為滿足自己的需要來重復定義某個方法的不同實現,它具有如下特征:

      I.           通過使用關鍵字Override來覆寫

      II.         只有虛方法和抽象方法直接可以被覆寫

      III.       相同的方法名

      IV.       相同的參數列表

      V.         相同的返回值類型

      示意代碼:

      public abstract class BaseClass
      {
          
      public abstract void Write(string _str);
      }

      public class SubClass : BaseClass
      {
          
      public override void Write(string _str)
          
      {
              
      //
          }

      }

      .NET2.0中,泛型方法的覆寫,除了要遵守以上幾點外,還應該注意:

      在重寫定義了泛型參數的虛擬方法時,子類方法必須重新定義該方法特定的泛型參數:

      public class MyBaseClass
      {
          
      public virtual void MyMothed<T>(T t)
          
      {
              
      //  
          }

      }

      public class MySubClass : MyBaseClass
      {
          
      public override void MyMothed<T>(T t)//重新定義泛型參數T
          {
              
      // 
          }

      }

      在重寫定義了泛型參數的虛擬方法時,子類實現不能重復在基類方法級別出現的約束:

      public class MyBaseClass
      {
          
      public virtual void MyMothed<T>(T t) where T : new()
          

              
      //  
          }

      }

      public class MySubClass:MyBaseClass
      {
          
      public override void MyMothed<T>(T t)//不能重復任何約束
          {
             
      // 
          }

      }

      posted @ 2006-03-10 13:03  TerryLee  閱讀(4314)  評論(10)    收藏  舉報
      主站蜘蛛池模板: 亚洲国产精品成人综合色| 欧美性猛交xxxx乱大交丰满| 午夜高清福利在线观看| 亚洲欧美日韩愉拍自拍| 999国产精品999久久久久久 | 国内不卡一区二区三区| 久久97超碰色中文字幕| 強壮公弄得我次次高潮A片| 亚洲欧美日韩精品色xxx| 国产九九视频一区二区三区| 国产精品v片在线观看不卡| 国产精品毛片无遮挡高清| 亚洲熟女乱一区二区三区| 亚洲高清WWW色好看美女| 无套内内射视频网站| 精品人妻中文字幕有码在线| 影音先锋女人AA鲁色资源| 国产一区二区三区精美视频| 99热这里有精品| 国产裸体无遮挡免费精品| 国产午夜影视大全免费观看| 中文字幕乱码一区二区免费| 国外av片免费看一区二区三区| 国精品午夜福利视频| 国产精品多p对白交换绿帽| 亚洲av色在线播放一区| 亚洲男人的天堂久久香蕉| 亚洲国产中文在线有精品| 美女禁区a级全片免费观看| 中国孕妇变态孕交xxxx| 九九视频热最新在线视频| 国内精品视频一区二区三区八戒 | 四虎在线永久免费看精品| 欧美色aⅴ欧美综合色| 亚洲欧美综合中文| 欧美黑人巨大xxxxx| 潮喷失禁大喷水av无码| 亚洲中文字幕亚洲中文精| 无码福利一区二区三区| 亚洲欧美日韩精品久久亚洲区| 人妻丝袜中文无码AV影音先锋专区|