1. 程式人生 > >C# 接口用法

C# 接口用法

組成 有一個 重復 face 數量 實現 函數 write 時間

一、接口定義

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

二、聲明接口

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

C# 接口用法