【深入理解C#】第2章 C#1所搭建的核心基礎
阿新 • • 發佈:2019-03-02
class thread類 委托 組類型 賦值 需要 派生 聲明 --
1)委托類型
基本理解:
- 類型安全的函數指針。
- 可以間接完成某種操作,雖增加了復雜性,但也增加了靈活性。
可以看作方法的占位符。
為什麽要用委托:
- 可以傳遞函數意味著可以將業務邏輯作為參數傳遞。
- 間接調用
想要執行某些操作,但無需知道操作細節(Thread類)
2)C#1的類型系統是靜態的,顯式的和安全的
- 靜態--編譯器知道你能使用哪些成員
- 顯式--必須告訴編譯器變量具有什麽類型
安全--除非存在真實的轉換關系,否則不能將一種類型當作另一種類型
值類型和引用類型
類(使用class聲明)是引用類型,而結構(使用struct聲明)是值類型。
- 數組類型是引用類型,即使元素類型是值類型。
- 枚舉(使用enum聲明)是值類型。
- 委托類型(使用delegate聲明)是引用類型。
接口類型(使用interface聲明)是引用類型,但可由值類型實現。
值類型與引用類型的區別
- 值類型的變量再它聲明時的位置存儲,引用類型總是在堆中。
- 值類型的實例值總是存儲在實例本身存儲的地方,引用類型的實例存儲的是一個引用。
- 值類型不能派生出其他類型。
- 引用類型有同步塊索引,類型指針,需要GC回收。
賦值時,值類型是創建一個副本,引用類型是指向同一塊內存區域。
裝箱和拆箱
裝箱機制:允許根據值類型創建一個對象,然後使用這個新對象的一個引用。
裝箱場景
- 需要引用類型的地方用值類型’
- 值類型調用基類方法時
將值類型作為接口表達式使用時(把它賦給一個接口類型的變量,或者把它作為接口類型的參數來傳遞)
【深入理解C#】第2章 C#1所搭建的核心基礎