1. 程式人生 > >C# interface 的隱式與顯示實現及適應範圍原始碼演示

C# interface 的隱式與顯示實現及適應範圍原始碼演示

把程式碼過程中經常用到的一些程式碼段做個記錄,如下的資料是關於C# interface 的隱式與顯示實現及適應範圍演示的程式碼。

 

   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();





既然顯示介面實現這麼不給力,為什麼還要存在了,凡事存在即合理。在實際專案中,有時某個類往往會繼承多個介面,而介面中往往會有一些相同名稱、引數與型別的值。通過顯式介面實現可以為避免一些不必要的歧義(我在專案中碰到的不多,可能是因為專案太小的原因吧)。顯示介面實現與隱式介面實現的適應場景當類實現一個介面時,通常使用隱式介面實現,這樣可以方便的訪問介面方法和類自身具有的方法和屬性。當類實現多個介面時,並且介面中包含相同的方法簽名,此時使用顯式介面實現。即使沒有相同的方法簽名,仍推薦使用顯式介面,因為可以標識出哪個方法屬於哪個介面。隱式介面實現,類和介面都可訪問介面中方法。顯式介面實現,只能通過介面訪問。