2015年12月6日 星期日

[C#] 類別&類別成員

存取修飾詞

  • public : 公開
  • private : 私人
  • protected : 繼承者可以存取
  • internal : 組件內可存取
  • internal protected : 兩者取其一

其他修飾詞

  • abstract
    • 只有簽章
    • 一定要override –> 強迫實作
    • 使用情境:職責很抽象無法預定(ex."打"架、”打”屁、”打”牌)
  • virtual : 可以覆寫
  • sealed
    • 不可被繼承
    • 常配override使用
  • new
    • 少用,最好不用!!!
    • 上層沒有修飾詞,要蓋過去時才用
    • 重要 :  使用new的method會靠type的型別來執行該method(慎用)
  • override : 追回最上層一定是abstract、virtual,override本身也可以被覆寫

型別物件vs值型個體物件

常數

  • 編譯時期就會嘗試取代值
  • 使用readonly property取代

欄位(field)

  • 類別層級的變數
  • 很少是public

屬性(property)

  • 一種方法的變形
  • 自動實作屬性 ({get;set;})
  • 編譯完是沒有屬性的
  • 唯讀/寫 (ex. {get;private set;})

方法(method)

  • 關鍵字 : ref、out、params
    • ref : 遞迴較常用,防止stack爆掉
    • out : 強迫該方法一定要產生該物件
    • params : 語法糖
  • 傳值與傳址 : 分實體與參考型別的傳值、址,主要主詞在變數就對了
  • Tuple
  • object x; 代表 ?? (0000, null)
  • 多載 :
    • 逼不得已才用(東西一多就會變複雜)
    • 如果參數一樣多 : 使用泛型、繼承式多型

委派

  • 基礎 :
    • 參考型別
    • 一種方法簽章的型別
    • 透過Invoke叫用,依序執行所有linkedlist
    • 心中都有一個linkedlist
  • Action型別
  • Func型別
  • Predicate(舊)

事件

  • 觀察者模式簡化版
  • mvc比較少用到

建構式

  • 呼叫自己的建構式很重要
  • 隱含 : 語法糖,你應該要寫但你不寫也沒關係
  • 建構式不會被繼承
  • 繼承鏈順序
    •    繼承關係 : System.Object -> A –> B
    •    GO :  B初始分配位置 -> A初始 -> OBJ初始 -> A建構 -> B建構

沒有留言:

張貼留言