Share via


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

更新:2007 年 11 月

屬性 (Property) 就是提供讀取、寫入或計算私用 (Private) 欄位值之彈性機制的成員。雖然可以將屬性當成公用資料成員使用,不過它們其實是稱為「存取子」(Accessor) 的特殊方法。這可讓資料更容易存取,並且有助於提升方法的安全性和彈性。

在此範例中,TimePeriod 類別 (Class) 會儲存一段時間。此類別在內部以秒為單位儲存時間,但名為 Hours 的屬性則讓用戶端能夠以小時為單位來指定時間。Hours 屬性的存取子會執行小時和秒鐘之間的轉換。

範例

class TimePeriod
{
    private double seconds;

    public double Hours
    {
        get { return seconds / 3600; }
        set { seconds = value * 3600; }
    }
}


class Program
{
    static void Main()
    {
        TimePeriod t = new TimePeriod();

        // Assigning the Hours property causes the 'set' accessor to be called.
        t.Hours = 24;

        // Evaluating the Hours property causes the 'get' accessor to be called.
        System.Console.WriteLine("Time in hours: " + t.Hours);
    }
}
// Output: Time in hours: 24

屬性概觀

  • 屬性讓類別能夠在隱藏實作或驗證程式碼的同時,以公開的方式取得並設定值。

  • get 屬性存取子是用來傳回屬性值,而 set 存取子是用來指定新值。這些存取子可能具有不同的存取層級。如需詳細資訊,請參閱非對稱存取子的存取範圍 (C# 程式設計手冊)

  • value 關鍵字的用途是定義由 set 索引子所指定的值。

  • 沒有實作 set 方法的屬性就是唯讀的。

  • 針對不需要自訂存取子程式碼的簡單屬性,請考慮使用自動實作的屬性。如需詳細資訊,請參閱自動實作的屬性 (C# 程式設計手冊)

相關章節

C# 語言規格

如需詳細資料,請參閱 C# 語言規格中的下列章節:

  • 1.6.7.2 屬性

  • 10.2.9.1 保留給屬性的成員名稱

  • 10.7 屬性

請參閱

概念

C# 程式設計手冊

屬性設計

參考

使用屬性 (C# 程式設計手冊)

索引子 (C# 程式設計手冊)