介面在 C# 中扮演著定義契約的關鍵角色。本文整理介面的核心特性、與類別的差異,並提供完整的程式碼範例說明定義與實作方式。
interface ISampleInterface1
{
// 索引子
string this[int index] { get; set; }
// 事件
event EventHandler SampleEvent;
// 方法
void Find(int value);
// 屬性
string Point { get; set; }
}
上述介面定義了一個索引子、一個事件、一個方法與一個屬性。
public interface ISampleInterface : ISampleInterface1
{
// 注意:介面中不能定義欄位與實作
// private int a = 1; // 編譯錯誤
// 方法宣告(無實作區塊)
void Find(int value);
// 事件宣告
event EventHandler SampleEvent;
// 方法宣告
void OnEvent();
}
public class SampleClass : ISampleInterface
{
private int _counter = 0;
// 實作索引子
public string this[int index]
{
get => $"Index: {index}";
set => _counter = index;
}
// 實作事件
public event EventHandler SampleEvent;
// 實作方法
public void Find(int value)
{
_counter += value;
}
public void OnEvent()
{
SampleEvent?.Invoke(this, EventArgs.Empty);
}
// 實作屬性
public string Point { get; set; }
}
public,不可加上存取修飾詞ISampleInterface.Find())掌握介面設計精髓,能讓您建立鬆耦合、高擴充性的系統架構,是 C# 物件導向程式設計的核心功力之一。