1. 程式人生 > >【深入理解C#】第2章 C#1所搭建的核心基礎

【深入理解C#】第2章 C#1所搭建的核心基礎

class thread類 委托 組類型 賦值 需要 派生 聲明 --

1)委托類型

基本理解:

  • 類型安全的函數指針。
  • 可以間接完成某種操作,雖增加了復雜性,但也增加了靈活性。
  • 可以看作方法的占位符。

    為什麽要用委托:

  • 可以傳遞函數意味著可以將業務邏輯作為參數傳遞。
  • 間接調用
  • 想要執行某些操作,但無需知道操作細節(Thread類)

2)C#1的類型系統是靜態的,顯式的和安全的

  • 靜態--編譯器知道你能使用哪些成員
  • 顯式--必須告訴編譯器變量具有什麽類型
  • 安全--除非存在真實的轉換關系,否則不能將一種類型當作另一種類型

    值類型和引用類型

    類(使用class聲明)是引用類型,而結構(使用struct聲明)是值類型。

  • 數組類型是引用類型,即使元素類型是值類型。
  • 枚舉(使用enum聲明)是值類型。
  • 委托類型(使用delegate聲明)是引用類型。
  • 接口類型(使用interface聲明)是引用類型,但可由值類型實現。

    值類型與引用類型的區別

  • 值類型的變量再它聲明時的位置存儲,引用類型總是在堆中。
  • 值類型的實例值總是存儲在實例本身存儲的地方,引用類型的實例存儲的是一個引用。
  • 值類型不能派生出其他類型。
  • 引用類型有同步塊索引,類型指針,需要GC回收。
  • 賦值時,值類型是創建一個副本,引用類型是指向同一塊內存區域。

    裝箱和拆箱

    裝箱機制:允許根據值類型創建一個對象,然後使用這個新對象的一個引用。

    裝箱場景

  • 需要引用類型的地方用值類型’
  • 值類型調用基類方法時
  • 將值類型作為接口表達式使用時(把它賦給一個接口類型的變量,或者把它作為接口類型的參數來傳遞)

【深入理解C#】第2章 C#1所搭建的核心基礎