C# 語言規範--1.9 介面

來源:互聯網
上載者:User
規範|介面

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

    樣本

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 ITextBox: IControl
{
   void SetText(string text);
}
interface IListBox: IControl
{
   void SetItems(string[] items);
}
interface IComboBox: ITextBox, IListBox {}

    介面 IComboBox 同時從 ITextBox 和 IListBox 繼承。

    類和結構可以實現多個介面。在下面的樣本中,

interface IDataBound
{
   void Bind(Binder b);
}
public class EditBox: Control, IControl, IDataBound
{
   public void Paint() {...}
   public void Bind(Binder b) {...}
}

    類 EditBox 從類 Control 派生,並且同時實現 IControl 和 IDataBound。

    在前面的樣本中,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
   }
}



相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。