C# 接口用法


一、接口定義

  接口是指一組函數成員而不實現它們的引用類型,只能由類和結構來是實現,接口的作用就不闡述了

 

二、聲明接口

interface IMyInterface  //interface 是關鍵字,后面的是接口名稱
{
    int DoSomething(int val1, int val2);  //分號代表實現主體,不能含有public等修飾符,默認為public
}

  下面是一些注意事項:

    a:接口聲明不能包括靜態成員和數據成員,只能包含非靜態成員方法、時間、屬性、索引器

    b:函數成員的聲明不能有任何實現代碼,並且在每個聲明的主體后使用分號分隔

    c:   接口成員可以使用public、private等修飾符,而接口成員是隱式public,不允許有任何訪問修飾符,包括public

    d:按照慣例,接口名稱從大寫的 I 開始,如 ITest

    e:如果類從基類繼承並使用了接口,基類必須放在接口之前(只能有一個基類,接口可以有多個)

    f:接口可以繼承接口

 

三、接口和as運算符

IMyInter b = c as IMyInter;
if(b != null)
    Console.WriteLine("Not null");

代碼先使用as運算符從類對象獲取接口引用,並賦值給b,使b的值為null 或 IMyInter,判斷是否為null

 

四、實現具有重復成員的接口

  由於類可以實現任意數量的接口,因此可能有多個接口成員有相同的簽名和返回類型,例如:

interface IMyInter1
{
    void Print(string a);
}

interface IMyInter2
{
    void Print(string b);
}

對於上面的例子,有兩種解決方法

  1、實現單個成員來滿足所有包含重復成員的接口

class MyClass : IMyInter1, IMyInter2
{
    public void Print(sting s)
    {
        Console.WriteLine("value is {0}",s);
    }    
}

  2.創建顯式接口成員實現,由接口名稱加點號分隔符和成員名稱組成

class MyClass : IMyInter1, IMyInter2
{
    public void IMyInter1.Print(sting s)
    {
        Console.WriteLine("IMyInter1 value is {0}",s);
    }    

     public void IMyInter2.Print(sting s)
    {
        Console.WriteLine("IMyInter2 value is {0}",s);
    }    
}

 


免責聲明!

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



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