定 價(jià):¥129.00
作 者: | 郝亦非 |
出版社: | 機(jī)械工業(yè)出版社 |
叢編項(xiàng): | |
標(biāo) 簽: | 暫缺 |
ISBN: | 9787111604402 | 出版時(shí)間: | 2019-09-01 | 包裝: | |
開(kāi)本: | 頁(yè)數(shù): | 字?jǐn)?shù): |
引 言
第一部分 基礎(chǔ)知識(shí)
第1章 .NET基礎(chǔ)知識(shí) 2
1.1 .NET框架介紹 2
1.2 .NET框架發(fā)展史 3
1.3 .NET框架的主要成員 5
1.3.1 兩步編譯與跨平臺(tái) 5
1.3.2 CLR 6
1.3.3 CLI 7
1.3.4 CTS和CLS 8
1.3.5 框架類(lèi)庫(kù)(FCL) 8
1.3.6 基礎(chǔ)類(lèi)庫(kù)(BCL) 9
1.4 程序集 10
1.4.1 反向工程—使用ILSpy觀察IL 10
1.4.2 程序集與托管模塊 11
1.4.3 程序集的部署 18
1.5 .NET程序的編譯:IL與JIT 20
1.5.1 什么是IL(CIL) 21
1.5.2 初識(shí)IL 21
1.5.3 System.Reflection.Emit 31
1.5.4 即時(shí)編譯(JIT) 33
1.5.5 運(yùn)行時(shí)的驗(yàn)證 34
1.5.6 Visual Studio的編譯模式與本地代碼的優(yōu)化 34
1.5.7 托管代碼與非托管代碼的互操作性 35
1.6 CLR啟動(dòng)與Hello World的運(yùn)行 36
1.7 本章小結(jié) 37
1.8 思考題 37
第2章 C#類(lèi)型基礎(chǔ)(上) 38
2.1 公共類(lèi)型系統(tǒng) 38
2.2 堆與棧 40
2.2.1 堆 40
2.2.2 棧 41
2.3 引用類(lèi)型的內(nèi)存分配 42
2.3.1 字段的對(duì)齊 44
2.3.2 同步塊索引 45
2.3.3 方法表指針和類(lèi)型對(duì)象 45
2.3.4 靜態(tài)字段和屬性 46
2.4 使用WinDbg探查內(nèi)存 46
2.4.1 WinDbg簡(jiǎn)易命令速查 47
2.4.2 使用WinDbg探查引用類(lèi)型 47
2.4.3 引用類(lèi)型的復(fù)制 52
2.5 值類(lèi)型 53
2.5.1 基元類(lèi)型 54
2.5.2 值類(lèi)型的內(nèi)存分配 54
2.5.3 值類(lèi)型的構(gòu)造函數(shù) 56
2.5.4 何時(shí)考慮使用值類(lèi)型 57
2.5.5 值類(lèi)型是密封的 58
2.5.6 值類(lèi)型和引用類(lèi)型的區(qū)別與聯(lián)系 58
2.5.7 嵌套:值類(lèi)型與引用類(lèi)型 58
2.6 裝箱和拆箱 59
2.6.1 裝箱的過(guò)程 59
2.6.2 拆箱的過(guò)程 60
2.6.3 如何避免拆箱和裝箱 60
2.7 本章小結(jié) 61
2.8 思考題 61
第3章 C#類(lèi)型基礎(chǔ)(下) 62
3.1 類(lèi)型的非方法成員 62
3.1.1 常量 62
3.1.2 字段 63
3.1.3 無(wú)參屬性 64
3.1.4 有參屬性 66
3.1.5 屬性的意義 67
3.2 類(lèi)型的構(gòu)造函數(shù)和析構(gòu)函數(shù) 67
3.2.1 靜態(tài)類(lèi) 67
3.2.2 實(shí)例構(gòu)造函數(shù)(引用類(lèi)型) 68
3.2.3 實(shí)例構(gòu)造函數(shù)(值類(lèi)型) 69
3.2.4 靜態(tài)構(gòu)造函數(shù) 69
3.2.5 構(gòu)造函數(shù)的執(zhí)行順序 70
3.2.6 析構(gòu)函數(shù) 71
3.3 類(lèi)型的普通方法成員 72
3.3.1 方法表 73
3.3.2 使用WinDbg探查方法表 73
3.3.3 方法槽表與方法描述表在JIT前后的變化 75
3.3.4 方法調(diào)用 77
3.3.5 方法參數(shù)的按值傳遞和按引用傳遞 80
3.4 類(lèi)型轉(zhuǎn)換 82
3.4.1 將一個(gè)對(duì)象轉(zhuǎn)換為它的基類(lèi)型 83
3.4.2 將一個(gè)對(duì)象轉(zhuǎn)換為它的派生類(lèi)型 84
3.4.3 基元類(lèi)型的類(lèi)型轉(zhuǎn)換 84
3.4.4 自定義類(lèi)型轉(zhuǎn)換 84
3.5 System.Object類(lèi)型的主要方法 85
3.6 本章小結(jié) 90
3.7 思考題 91
第4章 C#和面向?qū)ο?nbsp;92
4.1 面向?qū)ο蟪绦蛟O(shè)計(jì) 92
4.2 繼承 93
4.2.1 方法表與繼承 94
4.2.2 再論Call與Callvirt 94
4.2.3 IL中修飾方法的關(guān)鍵字 95
4.2.4 方法的重載、重寫(xiě)和隱藏 96
4.2.5 值類(lèi)型的方法調(diào)用 100
4.3 接口和多態(tài) 101
4.3.1 抽象類(lèi)與Is A關(guān)系 102
4.3.2 接口與Has A關(guān)系 102
4.3.3 顯式接口實(shí)現(xiàn) 103
4.3.4 顯式接口實(shí)現(xiàn)與泛型接口 104
4.3.5 抽象類(lèi)VS接口 105
4.3.6 接口不繼承自O(shè)bject 106
4.3.7 接口方法分派 106
4.4 面向?qū)ο缶幊涛宕笤瓌t(SOLID) 106
4.4.1 單一職責(zé)原則 107
4.4.2 開(kāi)閉原則 107
4.4.3 里氏代換原則 111
4.4.4 接口隔離原則 111
4.4.5 依賴(lài)倒轉(zhuǎn)原則 112
4.5 本章小結(jié) 112
4.6 思考題 113
第5章 字符串 114
5.1 字符 114
5.2 字符串的特性 115
5.2.1 字符串與普通的引用類(lèi)型相比 116
5.2.2 IL中創(chuàng)建字符串 116
5.2.3 字符串的不變性 117
5.2.4 通過(guò)成員來(lái)證明不變性 118
5.2.5 為什么要這么設(shè)計(jì) 119
5.3 字符串駐留 119
5.4 字符串的相加 121
5.5 不變性只是針對(duì)托管代碼 124
5.6 本章小結(jié) 125
5.7 思考題 125
第6章 垃圾回收 126
6.1 垃圾回收的概念 127
6.1.1 GC堆的構(gòu)造 127
6.1.2 識(shí)別垃圾 128
6.1.3 壓縮 136
6.1.4 C#的GC規(guī)則總結(jié) 136
6.2 垃圾回收策略 136
6.2.1 Dispose方法和IDisposible接口 136
6.2.2 析構(gòu)函數(shù)(終結(jié)器) 137
6.2.3 如何回收托管資源 140
6.2.4 如何回收非托管資源 142
6.2.5 using關(guān)鍵字 143
6.2.6 總結(jié):怎樣實(shí)現(xiàn)垃圾回收策略 144
6.3 GC的工作模式 145
6.3.1 工作站模式 145
6.3.2 服務(wù)器模式 146
6.4 大對(duì)象 146
6.5 本章小結(jié) 147
6.6 思考題 147
第7章 異常與異常處理 148
7.1 C#的異常處理 149
7.1.1 try 149
7.1.2 catch 149
7.1.3 finally 150
7.1.4 結(jié)構(gòu)化異常處理 152
7.1.5 throw和throw ex 153
7.2 IL中的異常處理機(jī)制 155
7.3 開(kāi)發(fā)中的異常處理 159
7.3.1 提高程序的健壯性 159
7.3.2 使用.NET自帶的日志類(lèi)型 159
7.4 本章小結(jié) 163
7.5 思考題 163
第二部分 C#特性
第8章 委托和事件 166
8.1 委托 166