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

屬性 (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# 語言規格。語言規格是 C# 語法和用法的限定來源。

請參閱

參考

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

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

概念

C# 程式設計手冊