C#中接口方法的顯示實現


當一個類實現接口的方法是有兩種方式,第一種就是直接實現,第二種顯示實現,但是一般用的比較多的是第一種。

 

 

那么為什么要弄一個接口方法的顯示實現呢?主要原因是,如果一個類需要顯示多個接口,這些接口有同名方法,這個時候普通的實現就無法解決這個問題,用顯示實現就能解決這個問題。

class Test: ITest1,ITest2
{
    //在實現上面兩個接口的時候出現同名的情況,如果使用第一種,實現方式,無法區分這個實現的這個個方式是那個接口中的
}

interface ITest1
{
    void  Method1();
}

interface ITest2
{

    void Methid1();
}

如何顯示的實現接口方法,其實就是一句話把方法名稱前加個接口名稱   接口名.方法名 

class Test: ITest1,ITest2
{
    //在實現上面兩個接口的時候出現同名的情況,如果使用第一種,實現方式,無法區分這個實現的這個個方式是那個接口中的

    void ITest1.Method1()  //ITest1中的方法
    {
       
    }

    void ITest2.Methid1()   //ITest2中的方法
    {
       
    }
}

interface ITest1
{
    void  Method1();
}

interface ITest2
{

    void Methid1();
}

那么如何調用這些顯示實現的方法呢?

  (1)  顯示實現的接口方法在類中都是私有的,直接new出來的實例中是無法獲取到這些方法的(如圖,Test的實例中實現的接口方法在智能提示中是沒有的)

(2)調用時需要把實例先轉型成接口類型在調用(這么做的原因跟上面一樣,如果能直接就調用因為方法名字都一樣,程序無法得知具體是調用那個方法,在轉型后,接口中的方法只有一個,就能知道掉用的具體方法了

   

static void Main()
{
Test test = new Test();
(test as ITest1).Method1(); //顯示的結果是 ITest1.Method1
(test as ITest2).Methid1(); //顯示的結果是 ITest2.Methid1

Console.ReadKey();

}
 
         

class
Test: ITest1,ITest2 { //在實現上面兩個接口的時候出現同名的情況,如果使用第一種,實現方式,無法區分這個實現的這個個方式是那個接口中的 void ITest1.Method1() { Console.Write("ITest1.Method1"); } void ITest2.Methid1() { Console.Write(" ITest2.Methid1"); } } interface ITest1 { void Method1(); } interface ITest2 { void Methid1(); }

 

  我最開始接觸的時候感覺很神奇,但是在實際使用中建議,盡量避免使用這種顯示的實現,對於沒有初次看代碼的人來說,會讓人感覺莫名奇妙,明明在類中實現了這個方法,為什么在new出來的實例中竟然找不到該方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM