屬性 (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# 語法及用法的限定來源。