分享方式:


介面屬性 (C# 程式設計手冊)

屬性可以宣告於 interface 上。 以下範例宣告介面屬性存取子:

public interface ISampleInterface
{
    // Property declaration:
    string Name
    {
        get;
        set;
    }
}

介面屬性通常沒有主體。 存取子會指出屬性是讀取/寫入、唯讀還是唯寫。 不同於類別和結構,宣告沒有主體的存取子並不會宣告 自動實作的屬性。 介面可為成員定義預設實作,包括屬性。 為介面中的屬性定義預設實作的情況很少見,因為介面無法定義執行個體資料欄位。

範例

在此範例中,IEmployee 介面具有讀寫屬性 Name 和唯讀屬性 CounterEmployee 類別會實作 IEmployee 介面,並使用這兩個屬性。 程式會讀取新員工的姓名和目前員工人數,並顯示員工姓名和計算的員工人數。

您可以使用屬性的完整名稱,而屬性參考在其中宣告成員的介面。 例如:

string IEmployee.Name
{
    get { return "Employee Name"; }
    set { }
}

前例示範的是明確介面實作。 例如,如果類別 Employee 實作 ICitizenIEmployee 這兩個介面,且這兩個介面都具有 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

另請參閱