ETH官方钱包

前往
大廳
主題

C#筆記_{get; set;}

又在亂玩一通 | 2022-09-28 23:46:57 | 巴幣 0 | 人氣 1148

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

結束




創作回應

更多創作