欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C# 接口的隱式與顯示實現及適應場景

 更新時間:2012年12月21日 09:05:03   作者:  
以前在用到接口時,從來沒注意到接口分為隱式實現與顯示實現。昨天在瀏覽博客時看到相關內容,現在根據自己的理解記錄一下,方便日后碰到的時候溫習溫習,需要的朋友可以了解下
以前在用到接口時,從來沒注意到接口分為隱式實現與顯示實現。昨天在瀏覽博客時看到相關內容,現在根據自己的理解記錄一下,方便日后碰到的時候溫習溫習。

通俗的來講,“顯示接口實現”就是使用接口名稱作為方法名的前綴;而傳統(tǒng)的實現方式稱之為:“隱式接口實現”。費話不說,例子如下:
復制代碼 代碼如下:

   interface IAnimal
    {
       void Dog();
    }
    class Animal:IAnimal
    {
      public void Dog()
      {
        Console.WriteLine("dog...");
      }
     }
  定義了一個IAnimal接口,一般我們都會這么調用:
    //通過類調用
    Animal animal = new Animal();
    animal.Dog();
    //或者通過接口調用
    IAnimal animal = new Animal();
    animal.Dog();

  類和接口都能調用到,事實上這就是“隱式接口實現”。
  那么“顯示接口實現”是神馬模樣呢?
復制代碼 代碼如下:

  interface IAnimal
  {
    void Dog();
  }
  class Animal:IAnimal
  {
    void IAnimal.Dog()
    {
      Console.WriteLine("dog...");
    }
  }
    //只能通過接口調用
    IAnimal animal = new Animal();
    animal.Dog();
    用類的方法去實現時會報錯,不允許,“顯示接口實現”只允許接口實現。如果真想用類來實現呢,那必須要進行一下強制類型轉換。
    //強制類型轉換后即可
    Animal animal = new Animal();
    (animal as IAnimal).Dog();

既然顯示接口實現這么不給力,為什么還要存在了,凡事存在即合理。在實際項目中,有時某個類往往會繼承多個接口,而接口中往往會有一些相同名稱、參數與類型的值。通過顯式接口實現可以為避免一些不必要的歧義(我在項目中碰到的不多,可能是因為項目太小的原因吧)。

顯示接口實現與隱式接口實現的適應場景
當類實現一個接口時,通常使用隱式接口實現,這樣可以方便的訪問接口方法和類自身具有的方法和屬性。
當類實現多個接口時,并且接口中包含相同的方法簽名,此時使用顯式接口實現。即使沒有相同的方法簽名,仍推薦使用顯式接口,因為可以標識出哪個方法屬于哪個接口。

隱式接口實現,類和接口都可訪問接口中方法。顯式接口實現,只能通過接口訪問。

相關文章

  • asp.net 頁面逐步呈現的方法總結

    asp.net 頁面逐步呈現的方法總結

    分塊編碼 ( chunked encoding )就是讓 response 分塊編碼進行傳輸。response 分塊編碼,可以先傳輸一部分不需要處理的 html 代碼到客戶端,等其他耗時代碼執(zhí)行完畢后再傳輸另外的 html 代碼。
    2010-06-06
  • 基于asp.net實現圖片在線上傳并在線裁剪功能

    基于asp.net實現圖片在線上傳并在線裁剪功能

    本文主要介紹了基于asp.net實現圖片在線上傳并在線裁剪功能的具體事例代碼,具有一定的參考價值。需要的朋友可以參考下
    2016-12-12
  • DataGrid使用心得(調用及連接數據庫等等)

    DataGrid使用心得(調用及連接數據庫等等)

    在工作中遇到把DataGrid中綁定的后臺數據庫數據展示給用戶時把負數變?yōu)?的小問題,現在把它記錄下來包括DataGrid的調用/連接數據庫進行操作等等,感興趣的朋友可以了解下,或許本新得對你有所幫助
    2013-02-02
  • ASP.NET中動態(tài)控制RDLC報表

    ASP.NET中動態(tài)控制RDLC報表

    ASP.NET中動態(tài)控制RDLC報表...
    2006-09-09
  • ASP.NET Core實現AES-GCM加密算法

    ASP.NET Core實現AES-GCM加密算法

    這篇文章介紹了ASP.NET Core實現AES-GCM加密的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • ASP.NET4的自動啟動特性淺析

    ASP.NET4的自動啟動特性淺析

    本篇文章討論一個你可以選擇利用的ASP.NET4中小小的,但很棒的新特性,即自動啟動,需要的朋友可以參考下
    2015-10-10
  • .NET?6中為record類型自定義Equals方法

    .NET?6中為record類型自定義Equals方法

    這篇文章主要介紹了.NET?6中為record類型自定義Equals方法,record類型,這是一種新引用類型,而不是類或結構。record與類不同,區(qū)別在于record類型使用基于值的相等性,下文小編將介紹更多詳細資料,需要的朋友可以參考一下
    2022-03-03
  • asp.net 圖片超過指定大小后等比例壓縮圖片的方法

    asp.net 圖片超過指定大小后等比例壓縮圖片的方法

    asp.net 圖片超過指定大小后等比例壓縮圖片的方法,需要的朋友可以參考一下
    2013-05-05
  • 遍歷Hashtable 的幾種方法

    遍歷Hashtable 的幾種方法

    遍歷Hashtable 的幾種方法...
    2007-02-02
  • 在.NET?MAUI應用中配置應用生命周期事件

    在.NET?MAUI應用中配置應用生命周期事件

    本文詳細講解了在.NET?MAUI應用中配置應用生命周期事件的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03

最新評論