C#筆記_{get; set;}
這是縮寫的寫法,主要表示外面的class可以讀也可以存入
C#筆記_{get; private set;}
這也是縮寫的寫法,只是set前面多加了private。主要表示外面的class可以讀,但是不能存入
為了防止一些意外操作
解法1
將變數設為private
並利用method當作中介
解法2
或是利用get & set
get的程式碼
會在嘗試取得變數內容時呼叫
set的程式碼
會在嘗試存入數值時呼叫
private int hp;
public int HP
{
get { return hp ; }
set
{
if ( value < 0)
hp = 0;
else
hp = value;
}
}
使用get&set那部分的結果等同於呼叫下面這兩個method
public void hurt(int decreaseHP)
{
if (hp >= decreaseHP)
hp -= decreaseHP;
else
hp = 0;
}
public int getHP()
{
return hp;
}
假設外部設了一個method要調用HP
public void buttonDown()
{
User user = new User();
user.HP = -10;
Message.Show("" +user.HP);
}
有數值存入進HP get & set的話,就會執行set的部分
-10會先存入給value
value在做if判斷是不是小於0,如果是,hp就等於0;如果不是,value存入的值就再賦予給hp。
而-10的確小於0
所以hp就等於0
執行完set後,要讀取HP的值,所以換執行get
而get要返回 hp的值
而剛才hp已經被賦予數值0了
因此return hp;會返回0這個數值。
最後外部class的method中的user.HP,就會得到0
結束