介面屬性 (C# 程式設計手冊)
屬性可以宣告於 interface 上。 以下範例宣告介面屬性存取子:
public interface ISampleInterface
{
// Property declaration:
string Name
{
get;
set;
}
}
介面屬性通常沒有主體。 存取子會指出屬性是讀取/寫入、唯讀還是唯寫。 與類別和結構不同的是,宣告沒有主體的存取子時,無法宣告自動實作的屬性。 介面可定義成員的預設實作方式,包括屬性。 在介面中定義屬性的預設實作並非常見方法,因為介面可能無法定義執行個體資料欄位。
範例
在此範例中,IEmployee
介面具有讀寫屬性 Name
和唯讀屬性 Counter
。 Employee
類別會實作 IEmployee
介面,並使用這兩個屬性。 程式會讀取新員工的姓名和目前員工人數,並顯示員工姓名和計算的員工人數。
您可以使用屬性的完整名稱,而屬性參考在其中宣告成員的介面。 例如:
string IEmployee.Name
{
get { return "Employee Name"; }
set { }
}
前例示範的是明確介面實作。 例如,如果 Employee
類別實作 ICitizen
和 IEmployee
這兩個介面,而且這兩個介面都具有 Name
屬性,則需要明確介面成員實作。 也就是說,下列屬性宣告:
string IEmployee.Name
{
get { return "Employee Name"; }
set { }
}
在 IEmployee
介面上實作 Name
屬性,而下列宣告:
string ICitizen.Name
{
get { return "Citizen Name"; }
set { }
}
在 ICitizen
介面上實作 Name
屬性。
interface IEmployee
{
string Name
{
get;
set;
}
int Counter
{
get;
}
}
public class Employee : IEmployee
{
public static int numberOfEmployees;
private string _name;
public string Name // read-write instance property
{
get => _name;
set => _name = value;
}
private int _counter;
public int Counter // read-only instance property
{
get => _counter;
}
// constructor
public Employee() => _counter = ++numberOfEmployees;
}
System.Console.Write("Enter number of employees: ");
Employee.numberOfEmployees = int.Parse(System.Console.ReadLine());
Employee e1 = new Employee();
System.Console.Write("Enter the name of the new employee: ");
e1.Name = System.Console.ReadLine();
System.Console.WriteLine("The employee information:");
System.Console.WriteLine("Employee number: {0}", e1.Counter);
System.Console.WriteLine("Employee name: {0}", e1.Name);
範例輸出
Enter number of employees: 210
Enter the name of the new employee: Hazem Abolrous
The employee information:
Employee number: 211
Employee name: Hazem Abolrous
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將推出:在 2024 年,我們將隨著內容的意見反應機制逐步淘汰 GitHub 問題,並以新的意見反應系統來取代。 如需詳細資訊,請參閱提交並檢視相關的意見反應