interface (C# 參考)
更新:2007 年 11 月
介面只包含方法、屬性、事件或索引的簽章。成員的實作 (Implementation) 是在實作介面的類別或結構中完成,如下列範例所示:
範例
interface ISampleInterface
{
void SampleMethod();
}
class ImplementationClass : ISampleInterface
{
// Explicit interface member implementation:
void ISampleInterface.SampleMethod()
{
// Method implementation.
}
static void Main()
{
// Declare an interface instance.
ISampleInterface obj = new ImplementationClass();
// Call the member.
obj.SampleMethod();
}
}
介面可以是命名空間 (Namespace) 或類別的成員,而且可以包含下列成員的簽章:
介面可以繼承一個或多個基底介面。
當基底型別 (Base Type) 清單包含基底類別和介面時,基底類別一定會排在清單的第一個。
實作介面的類別能夠明確實作該介面的成員。明確實作的成員只能經由該介面的執行個體 (Instance) 來存取,不能經由類別執行個體存取。
如需詳細資訊以及明確介面實作的程式碼範例,請參閱明確介面實作 (C# 程式設計手冊)。
下列範例示範了介面實作。在這個範例中,介面包含屬性宣告,類別則包含實作。
interface IPoint
{
// Property signatures:
int x
{
get;
set;
}
int y
{
get;
set;
}
}
class Point : IPoint
{
// Fields:
private int _x;
private int _y;
// Constructor:
public Point(int x, int y)
{
_x = x;
_y = y;
}
// Property implementation:
public int x
{
get
{
return _x;
}
set
{
_x = value;
}
}
public int y
{
get
{
return _y;
}
set
{
_y = value;
}
}
}
class MainClass
{
static void PrintPoint(IPoint p)
{
Console.WriteLine("x={0}, y={1}", p.x, p.y);
}
static void Main()
{
Point p = new Point(2, 3);
Console.Write("My Point: ");
PrintPoint(p);
}
}
// Output: My Point: x=2, y=3
C# 語言規格
如需詳細資料,請參閱 C# 語言規格中的下列章節:
1.9 介面
3.4.5 介面成員
4.2.4 介面型別
10.1.2.2 介面實作
11.2 結構介面
13 介面