interface
介面會定義規範。類別或結構在實作介面時必須遵守它的規範。宣告採用下列格式:
[attributes] [modifiers] interface identifier [:base-list] {interface-body}[;]
其中:
attributes (選擇項)
額外的宣告式資訊。如需屬性和屬性類別的詳細資訊,請參閱 17. 屬性。
modifiers (選擇項)
允許的修飾詞是 new 和四個存取修飾詞。
identifier
介面名稱。
base-list (選擇項)
包含一或多個明確基底介面的清單,以逗點分隔。
interface-body
介面成員的宣告。
備註
介面可以是命名空間 (Namespace) 或類別的成員,而且可以包含下列成員的簽名碼:
方法
屬性 (Property)
索引子
事件
介面可以繼承一或多個基底介面。下列範例裡,介面 IMyInterface 繼承自兩個基底介面,IBase1 和 IBase2:
interface IMyInterface: IBase1, IBase2
{
void MethodA();
void MethodB();
}
類別和結構都可以實作介面。實作介面的識別項會出現在類別基底清單裡。例如:
class Class1: Iface1, Iface2
{
// class members
}
當類別基底清單包含一個基底類別和介面時,基底類別會排在清單的第一個。例如:
class ClassA: BaseClass, Iface1, Iface2
{
// class members
}
如需介面的詳細資訊,請參閱介面。
如需屬性和索引子的詳細資訊,請參閱屬性宣告和索引子宣告。
範例
下列範例示範了介面實作。在這個範例裡,介面 IPoint 包含屬性宣告,其負責欄位值的設定和取得。類別 MyPoint 包含屬性實作。
// keyword_interface.cs
// Interface implementation
using System;
interface IPoint
{
// Property signatures:
int x
{
get;
set;
}
int y
{
get;
set;
}
}
class MyPoint : IPoint
{
// Fields:
private int myX;
private int myY;
// Constructor:
public MyPoint(int x, int y)
{
myX = x;
myY = y;
}
// Property implementation:
public int x
{
get
{
return myX;
}
set
{
myX = value;
}
}
public int y
{
get
{
return myY;
}
set
{
myY = value;
}
}
}
class MainClass
{
private static void PrintPoint(IPoint p)
{
Console.WriteLine("x={0}, y={1}", p.x, p.y);
}
public static void Main()
{
MyPoint p = new MyPoint(2,3);
Console.Write("My Point: ");
PrintPoint(p);
}
}
輸出
My Point: x=2, y=3