程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# 語言標准--1.9 接口

C# 語言標准--1.9 接口

編輯:C#入門知識

一個接口定義一個協定。實現接口的類或結構必須遵守其協定。接口可以包含方法、屬性、索引器和事件作為成員。

示例

interface IExample



{



   string this[int index] { get; set; }



   event EventHandler E;



   void F(int value);



   string P { get; set; }



}



public delegate void EventHandler(object sender, EventArgs e);

顯示了一個包含索引器、事件 E、方法 F 和屬性 P 的接口。

接口可以使用多重繼承。在下面的示例中,

interface IControl



{



   void Paint();



}



interface 99vextBox: IControl



{



   void SetText(string text);



}



interface IListBox: IControl



{



   void SetItems(string[] items);



}



interface IComboBox: 99vextBox, IListBox {}

接口 IComboBox 同時從 99vextBoxIListBox 繼承。

類和結構可以實現多個接口。在下面的示例中,

interface IDataBound



{



   void Bind(Binder b);



}



public class EditBox: Control, IControl, IDataBound



{



   public void Paint() {...}



   public void Bind(Binder b) {...}



} 

EditBox 從類 Control 派生,並且同時實現 IControlIDataBound

在前面的示例中,IControl 接口中的 Paint 方法和 IDataBound 接口中的 Bind 方法是使用 EditBox 類的公共成員實現的。C# 提供了另一種方式來實現這些方法,使得實現類避免將這些成員設置成公共的。這就是:接口成員可以用限定名來實現。例如,在 EditBox 類中將 Paint 方法命名為 IControl.Paint,將 Bind 方法命名為 IDataBound.Bind 方法。

public class EditBox: IControl, IDataBound



{



   void IControl.Paint() {...}



   void IDataBound.Bind(Binder b) {...}



}

用這種方式實現的接口成員稱為顯式接口成員,這是因為每個成員都顯式地指定要實現的接口成員。顯式接口成員只能通過接口來調用。例如,在 EditBox 中實現的 Paint 方法只能通過強制轉換為 IControl 接口來調用。

class Test



{



   static void Main() {



      EditBox editbox = new EditBox();



      editbox.Paint();   // error: no such method



      IControl control = editbox;



      control.Paint();   // calls EditBox's Paint implementation



   }



}
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved