在C#程式裡,get&set是很常使用的關鍵字,其功能是為了要防止 class 內部的變數遭到不正常操作,一般傳統是將變數設為 private 再提供 public method 存取,C# 特別為了上述狀況打造了 Get & Set 存取器。
一般只使用 get 而去除 set 的話,該變數將會變為唯讀,使用 Get & Set 存取器時,並不一定要有對應的 private 變數。
Get & Set 存取器可以用來即時運算一些平常大家認為是變數的數值。
get 存取子的主體類似於方法的主體。它必須傳回屬性型別的值。
set 存取子類似於傳回 void 的方法。它使用稱為 value 的隱含參數,其型別是屬性的型別。
set 是用在屬性 (Property) ,至於是否要用 "=",雖然你可以透過覆寫 operator= 的能力來賦予 "=" 的行為,但是 get 和 set 可以建立唯讀 (read-only) 或唯寫 (write-only) 的屬性,能力上會比 "=" 強一點 .
......... // 宣告變數(通常是 public)
{
get {...}// 希望變數讀取時執行的程式碼
set {...}// 希望數值存入時執行的程式碼
}
set & get的用法
class Role
{
private double _hp;
public double Hp
{
get { return _hp; }
set { _hp = value; }
}
}
基本自動實作屬性中 set 存取子
public int Score
{
set
{
score = values;
if (values > 100)
{
score = 100;
}
if (values < 0)
{
score = 0;
}
}
}
//加入Event的處理
public int Score
{
set
{
ScoreUpdating();//更新前事件
score = values;
ScoreUpdated();//更新完事件
}
}
public Student Student
{
get
{
if (student == null)
student = New Student("張小明", "學號001");
return student;
}
}
若是要設定唯讀, 僅需在set前頭加上關鍵字private,
如下:
private Student Student { get; private set; }
-雲遊山水為知已逍遙一生而忘齡- 電腦神手
沒有留言:
張貼留言