本書是廣受贊譽(yù)的《C# 圖解教程》的*版本。作者在本書中創(chuàng)造了一種全新的可視化敘述方式,以圖文并茂的形式、樸實(shí)簡潔的文字,并輔以大量表格和代碼示例,全面、直觀地闡述了C# 語言的各種特性。新版本除了精心修訂舊版內(nèi)容外,還全面涵蓋了C# 6.0 和C# 7.0 的新增特性,比如局部函數(shù)、throw 表達(dá)式、name of 和空條件運(yùn)算符、using static 指令、異常過濾器,等等。通過本書,讀者能夠快速、深入地理解C#,為自己的編程生涯打下良好的基礎(chǔ)。
·長銷十余年、數(shù)萬讀者認(rèn)可的C#入門經(jīng)典教程 ·全面涵蓋C# 6.0和C# 7.0的新增特性 本書是經(jīng)典的C#入門書,一版再版,全面講授了C#編程語言的基礎(chǔ)知識和工作原理。作者使用簡潔的文字描述,輔以清晰易懂的圖示,來解釋C#中的重要概念,使得每一個知識點(diǎn)既直觀明了又易于記憶。這一版補(bǔ)充介紹了C#新的語言特性以及.NET Core。 本書是高效掌握和透徹理解C#語言的不二之選!
丹尼爾·索利斯(Daniel Solis) 擁有20余年軟件開發(fā)經(jīng)驗(yàn),微軟、IBM等公司技術(shù)顧問。他不僅是深受讀者愛戴和推崇的技術(shù)圖書作家,而且也是享譽(yù)世界的技術(shù)培訓(xùn)專家,在美國和歐洲各地傳授編程語言、Windows程序設(shè)計(jì)和Unix底層技術(shù)的經(jīng)驗(yàn)和心得。 卡爾·施羅坦博爾(Cal Schrotenboer) 擁有20余年軟件開發(fā)經(jīng)驗(yàn),精通C#,一直從事企業(yè)級軟件開發(fā)。近十年來他還在加州的一些社區(qū)大學(xué)教授.NET相關(guān)課程。
第 1 章 C#和.NET 框架 1
1.1 在.NET 之前 1
1.1.1 20 世紀(jì)90 年代末的Windows編程 1
1.1.2 下一代平臺服務(wù)的目標(biāo) 2
1.2 .NET 時代 2
1.2.1 .NET 框架的組成 2
1.2.2 大大改進(jìn)的編程環(huán)境 3
1.3 編譯成CIL 5
1.4 編譯成本機(jī)代碼并執(zhí)行 6
1.5 CLR 7
1.6 CLI 8
1.7 各種縮寫 9
1.8 C#的演化 9
1.9 C#和Windows 的演化 10
第 2 章 C#和.NET Core 11
2.1 .NET 框架的背景 11
2.2 為什么選擇.NET Core(和Xamarin) 11
2.3 .NET Core 的目標(biāo) 12
2.4 多平臺支持 13
2.5 快速發(fā)展和升級 13
2.6 程序占用空間小、部署簡單、版本問題少 13
2.7 開源社區(qū)支持 14
2.8 改進(jìn)的應(yīng)用程序性能 14
2.9 全新的開始 14
2.10 .NET Core 的發(fā)展 15
2.11 .NET 框架的未來 15
2.12 Xamarin 的適用之處 15
第3 章 C#編程概述 16
3.1 一個簡單的C#程序 16
3.2 標(biāo)識符 18
3.3 關(guān)鍵字 18
3.4 Main:程序的起始點(diǎn) 19
3.5 空白 19
3.6 語句 20
3.7 從程序中輸出文本 21
3.7.1 Write 21
3.7.2 WriteLine 21
3.7.3 格式字符串 22
3.7.4 多重標(biāo)記和值 23
3.7.5 格式化數(shù)字字符串 24
3.8 注釋:為代碼添加注解 28
3.8.1 關(guān)于注釋的更多內(nèi)容 28
3.8.2 文檔注釋 29
3.8.3 注釋類型總結(jié) 29
第4 章 類型、存儲和變量 30
4.1 C#程序是一組類型聲明 30
4.2 類型是一種模板 31
4.3 實(shí)例化類型 31
4.4 數(shù)據(jù)成員和函數(shù)成員 32
4.5 預(yù)定義類型 33
4.6 用戶定義類型 34
4.7 棧和堆 35
4.7.1 !35
4.7.2 堆 36
4.8 值類型和引用類型 37
4.8.1 存儲引用類型對象的成員 38
4.8.2 C#類型的分類 38
4.9 變量 39
4.9.1 變量聲明 39
4.9.2 多變量聲明 41
4.9.3 使用變量的值 41
4.10 靜態(tài)類型和dynamic 關(guān)鍵字 41
4.11 可空類型 42
第5 章 類的基本概念 43
5.1 類的概述 43
5.2 程序和類:一個簡單的示例 44
5.3 聲明類 45
5.4 類成員 45
5.4.1 字段 45
5.4.2 方法 47
5.5 創(chuàng)建變量和類的實(shí)例 48
5.6 為數(shù)據(jù)分配內(nèi)存 48
5.7 實(shí)例成員 49
5.8 訪問修飾符 50
5.9 從類的內(nèi)部訪問成員 52
5.10 從類的外部訪問成員 53
5.11 綜合應(yīng)用 54
第6 章 方法 56
6.1 方法的結(jié)構(gòu) 56
6.2 方法體內(nèi)部的代碼執(zhí)行 57
6.3 局部變量 58
6.3.1 類型推斷和var 關(guān)鍵字 59
6.3.2 嵌套塊中的局部變量 59
6.4 局部常量 60
6.5 控制流 61
6.6 方法調(diào)用 62
6.7 返回值 63
6.8 返回語句和void 方法 64
6.9 局部函數(shù) 66
6.10 參數(shù) 66
6.10.1 形參 67
6.10.2 實(shí)參 67
6.11 值參數(shù) 69
6.12 引用參數(shù) 71
6.13 引用類型作為值參數(shù)和引用參數(shù) 73
6.14 輸出參數(shù) 76
6.15 參數(shù)數(shù)組 79
6.15.1 方法調(diào)用 80
6.15.2 將數(shù)組作為實(shí)參 82
6.16 參數(shù)類型總結(jié) 83
6.17 ref 局部變量和ref 返回 83
6.18 方法重載 86
6.19 命名參數(shù) 87
6.20 可選參數(shù) 88
6.21 棧幀 91
6.22 遞歸 93
第7 章 深入理解類 95
7.1 類成員 95
7.2 成員修飾符的順序 96
7.3 實(shí)例類成員 97
7.4 靜態(tài)字段 98
7.5 從類的外部訪問靜態(tài)成員 98
7.5.1 靜態(tài)字段示例 99
7.5.2 靜態(tài)成員的生存期 100
7.6 靜態(tài)函數(shù)成員 101
7.7 其他靜態(tài)類成員類型 102
7.8 成員常量 102
7.9 常量與靜態(tài)量 103
7.10 屬性 103
7.10.1 屬性聲明和訪問器 104
7.10.2 屬性示例 105
7.10.3 使用屬性 106
7.10.4 屬性和關(guān)聯(lián)字段 106
7.10.5 執(zhí)行其他計(jì)算 107
7.10.6 只讀和只寫屬性 108
7.10.7 屬性與公有字段 109
7.10.8 計(jì)算只讀屬性示例 109
7.10.9 自動實(shí)現(xiàn)屬性 110
7.10.10 靜態(tài)屬性 111
7.11 實(shí)例構(gòu)造函數(shù) 112
7.11.1 帶參數(shù)的構(gòu)造函數(shù) 113
7.11.2 默認(rèn)構(gòu)造函數(shù) 114
7.12 靜態(tài)構(gòu)造函數(shù) 114
7.13 對象初始化語句 116
7.14 析構(gòu)函數(shù) 117
7.15 readonly 修飾符 117
7.16 this 關(guān)鍵字 118
7.17 索引器 119
7.17.1 什么是索引器 120
7.17.2 索引器和屬性 120
7.17.3 聲明索引器 121
7.17.4 索引器的set 訪問器 122
7.17.5 索引器的get 訪問器 122
7.17.6 關(guān)于索引器的更多內(nèi)容 123
7.17.7 為Employee 示例聲明索引器 123
7.17.8 另一個索引器示例 124
7.17.9 索引器重載 125
7.18 訪問器的訪問修飾符 126
7.19 分部類和分部類型 127
7.20 分部方法 128
第8 章 類和繼承 130
8.1 類繼承 130
8.2 訪問繼承的成員 131
8.3 所有類都派生自object 類 132
8.4 屏蔽基類的成員 133
8.5 基類訪問 135
8.6 使用基類的引用 135
8.6.1 虛方法和覆寫方法 137
8.6.2 覆寫標(biāo)記為override 的方法 139
8.6.3 覆蓋其他成員類型 142
8.7 構(gòu)造函數(shù)的執(zhí)行 142
8.7.1 構(gòu)造函數(shù)初始化語句 144
8.7.2 類訪問修飾符 145
8.8 程序集間的繼承 146
8.9 成員訪問修飾符 148
8.9.1 訪問成員的區(qū)域 149
8.9.2 公有成員的可訪問性 150
8.9.3 私有成員的可訪問性 150
8.9.4 受保護(hù)成員的可訪問性 150
8.9.5 內(nèi)部成員的可訪問性 151
8.9.6 受保護(hù)內(nèi)部成員的可訪問性 151
8.9.7 成員訪問修飾符小結(jié) 152
8.10 抽象成員 153
8.11 抽象類 154
8.11.1 抽象類和抽象方法的示例 154
8.11.2 抽象類的另一個例子 155
8.12 密封類 156
8.13 靜態(tài)類 156
8.14 擴(kuò)展方法 157
8.15 命名約定 160
第9 章 表達(dá)式和運(yùn)算符 162
9.1 表達(dá)式 162
9.2 字面量 163
9.2.1 整數(shù)字面量 164
9.2.2 實(shí)數(shù)字面量 165
9.2.3 字符字面量 166
9.2.4 字符串字面量 167
9.3 求值順序 168
9.3.1 優(yōu)先級 168
9.3.2 結(jié)合性 169
9.4 簡單算術(shù)運(yùn)算符 170
9.5 求余運(yùn)算符 170
9.6 關(guān)系比較運(yùn)算符和相等比較運(yùn)算符 171
9.7 遞增運(yùn)算符和遞減運(yùn)算符 173
9.8 條件邏輯運(yùn)算符 174
9.9 邏輯運(yùn)算符 175
9.10 移位運(yùn)算符 176
9.11 賦值運(yùn)算符 178
9.12 條件運(yùn)算符 179
9.13 一元算術(shù)運(yùn)算符 181
9.14 用戶定義的類型轉(zhuǎn)換 181
9.15 運(yùn)算符重載 184
9.15.1 運(yùn)算符重載的示例 185
9.15.2 運(yùn)算符重載的限制 186
9.16 typeof 運(yùn)算符 189
9.17 nameof 運(yùn)算符 190
9.18 其他運(yùn)算符 191
第 10 章 語句 192
10.1 什么是語句 192
10.2 表達(dá)式語句 193
10.3 控制流語句 194
10.4 if 語句 194
10.5 if else 語句 195
10.6 while 循環(huán) 196
10.7 do 循環(huán) 197
10.8 for 循環(huán) 198
10.8.1 for 語句中變量的作用域 200
10.8.2 初始化和迭代表達(dá)式中的多表達(dá)式 200
10.9 switch 語句 201
10.9.1 分支示例 203
10.9.2 其他類型的模式表達(dá)式 203
10.9.3 switch 語句的補(bǔ)充 205
10.9.4 分支標(biāo)簽 206
10.10 跳轉(zhuǎn)語句 207
10.11 break 語句 207
10.12 continue 語句 208
10.13 標(biāo)簽語句 209
10.13.1 標(biāo)簽 209
10.13.2 標(biāo)簽語句的作用域 209
10.14 goto 語句 210
10.15 using 語句 211
10.15.1 包裝資源的使用 212
10.15.2 using 語句的示例 212
10.15.3 多個資源和嵌套 213
10.15.4 using 語句的另一種形式 214
10.16 其他語句 215
第 11 章 結(jié)構(gòu) 216
11.1 什么是結(jié)構(gòu) 216
11.2 結(jié)構(gòu)是值類型 217
11.3 對結(jié)構(gòu)賦值 218
11.4 構(gòu)造函數(shù)和析構(gòu)函數(shù) 219
11.4.1 實(shí)例構(gòu)造函數(shù) 219
11.4.2 靜態(tài)構(gòu)造函數(shù) 220
11.4.3 構(gòu)造函數(shù)和析構(gòu)函數(shù)小結(jié) 221
11.5 屬性和字段初始化語句 221
11.6 結(jié)構(gòu)是密封的 221
11.7 裝箱和拆箱 222
11.8 結(jié)構(gòu)作為返回值和參數(shù) 222
11.9 關(guān)于結(jié)構(gòu)的更多內(nèi)容 222
第 12 章 枚舉 223
12.1 枚舉 223
12.1.1 設(shè)置底層類型和顯式值 225
12.1.2 隱式成員編號 225
12.2 位標(biāo)志 226
12.2.1 Flags 特性 229
12.2.2 使用位標(biāo)志的示例 230
12.3 關(guān)于枚舉的更多內(nèi)容 231
第 13 章 數(shù)組 234
13.1 數(shù)組 234
13.1.1 定義 234
13.1.2 重要細(xì)節(jié) 235
13.2 數(shù)組的類型 235
13.3 數(shù)組是對象 236
13.4 一維數(shù)組和矩形數(shù)組 237
13.5 實(shí)例化一維數(shù)組或矩形數(shù)組 238
13.6 訪問數(shù)組元素 238
13.7 初始化數(shù)組 239
13.7.1 顯式初始化一維數(shù)組 240
13.7.2 顯式初始化矩形數(shù)組 240
13.7.3 初始化矩形數(shù)組的語法點(diǎn) 241
13.7.4 快捷語法 241
13.7.5 隱式類型數(shù)組 241
13.7.6 綜合內(nèi)容 242
13.8 交錯數(shù)組 242
13.8.1 聲明交錯數(shù)組 243
13.8.2 快捷實(shí)例化 243
13.8.3 實(shí)例化交錯數(shù)組 244
13.8.4 交錯數(shù)組中的子數(shù)組 245
13.9 比較矩形數(shù)組和交錯數(shù)組 246
13.10 foreach 語句 247
13.10.1 迭代變量是只讀的 248
13.10.2 foreach 語句和多維數(shù)組 249
13.11 數(shù)組協(xié)變 250
13.12 數(shù)組繼承的有用成員 251
13.13 比較數(shù)組類型 254
13.14 數(shù)組與ref 返回和ref 局部變量 255
第 14 章 委托 256
14.1 什么是委托 256
14.2 委托概述 258
14.3 聲明委托類型 259
14.4 創(chuàng)建委托對象 260
14.5 給委托賦值 261
14.6 組合委托 262
14.7 為委托添加方法 262
14.8 從委托移除方法 263
14.9 調(diào)用委托 263
14.10 委托的示例 264
14.11 調(diào)用帶返回值的委托 265
14.12 調(diào)用帶引用參數(shù)的委托 266
14.13 匿名方法 267
14.13.1 使用匿名方法 268
14.13.2 匿名方法的語法 268
14.13.3 變量和參數(shù)的作用域 270
14.14 Lambda 表達(dá)式 271
第 15 章 事件 274
15.1 發(fā)布者和訂閱者 274
15.2 源代碼組件概覽 276
15.3 聲明事件 276
15.4 訂閱事件 277
15.5 觸發(fā)事件 278
15.6 標(biāo)準(zhǔn)事件的用法 280
15.6.1 通過擴(kuò)展EventArgs 來傳遞數(shù)據(jù) 281
15.6.2 移除事件處理程序 283
15.7 事件訪問器 284
第 16 章 接口 286
16.1 什么是接口 286
16.2 聲明接口 291
16.3 實(shí)現(xiàn)接口 292
16.4 接口是引用類型 294
16.5 接口和as 運(yùn)算符 295
16.6 實(shí)現(xiàn)多個接口 295
16.7 實(shí)現(xiàn)具有重復(fù)成員的接口 296
16.8 多個接口的引用 298
16.9 派生成員作為實(shí)現(xiàn) 299
16.10 顯式接口成員實(shí)現(xiàn) 300
16.11 接口可以繼承接口 302
16.12 不同類實(shí)現(xiàn)一個接口的示例 303
第 17 章 轉(zhuǎn)換 305
17.1 什么是轉(zhuǎn)換 305
17.2 隱式轉(zhuǎn)換 306
17.3 顯式轉(zhuǎn)換和強(qiáng)制轉(zhuǎn)換 307
17.4 轉(zhuǎn)換的類型 308
17.5 數(shù)字的轉(zhuǎn)換 309
17.5.1 隱式數(shù)字轉(zhuǎn)換 309
17.5.2 溢出檢測上下文 310
17.5.3 顯式數(shù)字轉(zhuǎn)換 311
17.6 引用轉(zhuǎn)換 315
17.6.1 隱式引用轉(zhuǎn)換 316
17.6.2 顯式引用轉(zhuǎn)換 317
17.6.3 有效顯式引用轉(zhuǎn)換 318
17.7 裝箱轉(zhuǎn)換 318
17.7.1 裝箱是創(chuàng)建副本 319
17.7.2 裝箱轉(zhuǎn)換 320
17.8 拆箱轉(zhuǎn)換 320
17.9 用戶自定義轉(zhuǎn)換 321
17.9.1 用戶自定義轉(zhuǎn)換的約束 322
17.9.2 用戶自定義轉(zhuǎn)換的示例 322
17.9.3 評估用戶自定義轉(zhuǎn)換 323
17.9.4 多步用戶自定義轉(zhuǎn)換的示例 324
17.10 is 運(yùn)算符 325
17.11 as 運(yùn)算符 326
第 18 章 泛型 327
18.1 什么是泛型 327
18.2 C#中的泛型 329
18.3 泛型類 330
18.3.1 聲明泛型類 331
18.3.2 創(chuàng)建構(gòu)造類型 331
18.3.3 創(chuàng)建變量和實(shí)例 332
18.3.4 使用泛型的棧的示例 333
18.3.5 比較泛型和非泛型!334
18.4 類型參數(shù)的約束 335
18.4.1 Where 子句 336
18.4.2 約束類型和次序 337
18.5 泛型方法 337
18.5.1 聲明泛型方法 338
18.5.2 調(diào)用泛型方法 338
18.5.3 泛型方法的示例 339
18.6 擴(kuò)展方法和泛型類 340
18.7 泛型結(jié)構(gòu) 341
18.8 泛型委托 342
18.9 泛型接口 344
18.9.1 使用泛型接口的示例 345
18.9.2 泛型接口的實(shí)現(xiàn)必須唯一 345
18.10 協(xié)變和逆變 346
18.10.1 協(xié)變 346
18.10.2 逆變 349
18.10.3 協(xié)變和逆變的不同 350
18.10.4 接口的協(xié)變和逆變 351
18.10.5 關(guān)于可變性的更多內(nèi)容 352
第 19 章 枚舉器和迭代器 354
19.1 枚舉器和可枚舉類型 354
19.2 IEnumerator 接口 356
19.3 IEnumerable 接口 358
19.4 泛型枚舉接口 360
19.5 迭代器 362
19.5.1 迭代器塊 362
19.5.2 使用迭代器來創(chuàng)建枚舉器 363
19.5.3 使用迭代器來創(chuàng)建可枚舉類型 365
19.6 常見迭代器模式 366
19.7 產(chǎn)生多個可枚舉類型 367
19.8 將迭代器作為屬性 368
19.9 迭代器的實(shí)質(zhì) 369
第 20 章 LINQ 371
20.1 什么是LINQ 371
20.2 LINQ 提供程序 372
20.3 方法語法和查詢語法 374
20.4 查詢變量 375
20.5 查詢表達(dá)式的結(jié)構(gòu) 376
20.5.1 from 子句 377
20.5.2 join 子句 378
20.5.3 什么是聯(lián)結(jié) 379
20.5.4 查詢主體中的from let where 片段 381
20.5.5 orderby 子句 384
20.5.6 select group 子句 385
20.5.7 查詢中的匿名類型 386
20.5.8 group 子句 387
20.5.9 查詢延續(xù):into 子句 388
20.6 標(biāo)準(zhǔn)查詢運(yùn)算符 389
20.6.1 標(biāo)準(zhǔn)查詢運(yùn)算符的簽名 392
20.6.2 查詢表達(dá)式和標(biāo)準(zhǔn)查詢運(yùn)算符 393
20.6.3 將委托作為參數(shù) 394
20.6.4 LINQ 預(yù)定義的委托類型 395
20.6.5 使用委托參數(shù)的示例 396
20.6.6 使用Lambda 表達(dá)式參數(shù)的示例 397
20.7 LINQ to XML 398
20.7.1 標(biāo)記語言 398
20.7.2 XML 基礎(chǔ) 398
20.7.3 XML 類 400
20.7.4 使用XML 特性 406
20.7.5 其他類型的節(jié)點(diǎn) 408
20.7.6 使用LINQ to XML 的LINQ 查詢 409
第 21 章 異步編程 412
21.1 什么是異步 412
21.2 async/await 特性的結(jié)構(gòu) 416
21.3 什么是異步方法 417
21.3.1 異步方法的控制流 421
21.3.2 取消一個異步操作 427
21.3.3 在調(diào)用方法中同步地等待任務(wù) 430
21.3.4 在異步方法中異步地等待任務(wù) 433
21.3.5 Task.Delay 方法 435
21.4 GUI 程序中的異步操作 436
21.5 使用異步Lambda 表達(dá)式 440
21.6 完整的GUI 程序 441
21.7 BackgroundWorker 類 443
21.8 并行循環(huán) 447
21.9 其他異步編程模式 450
21.10 BeginInvoke 和EndInvoke 451
21.10.1 等待直到完成模式 452
21.10.2 AsyncResult 類 453
21.10.3 輪詢模式 454
21.10.4 回調(diào)模式 455
21.11 計(jì)時器 458
第 22 章 命名空間和程序集 460
22.1 引用其他程序集 460
22.2 命名空間 464
22.2.1 命名空間名稱 467
22.2.2 命名空間的補(bǔ)充 467
22.2.3 命名空間跨文件伸展 468
22.2.4 嵌套命名空間 469
22.3 using 指令 470
22.3.1 using 命名空間指令 470
22.3.2 using 別名指令 471
22.3.3 using static 指令 471
22.4 程序集的結(jié)構(gòu) 472
22.5 程序集標(biāo)識符 473
22.6 強(qiáng)命名程序集 474
22.7 私有程序集的部署 475
22.8 共享程序集和GAC 476
22.8.1 把程序集安裝到GAC 476
22.8.2 GAC 內(nèi)的并肩執(zhí)行 477
22.9 配置文件 477
22.10 延遲簽名 478
第 23 章 異!480
23.1 什么是異常 480
23.2 try 語句 481
23.3 異常類 482
23.4 catch 子句 483
23.5 異常過濾器 485
23.6 catch 子句段 485
23.7 finally 塊 486
23.8 為異常尋找處理程序 487
23.9 進(jìn)一步搜索 488
23.9.1 一般法則 489
23.9.2 搜索調(diào)用棧的示例 489
23.10 拋出異!492
23.11 不帶異常對象的拋出 493
23.12 throw 表達(dá)式 494
第 24 章 預(yù)處理指令 495
24.1 什么是預(yù)處理指令 495
24.2 基本規(guī)則 495
24.3 #define 和#undef 指令 496
24.4 條件編譯 497
24.5 條件編譯結(jié)構(gòu) 498
24.6 診斷指令 500
24.7 行號指令 501
24.8 區(qū)域指令 502
24.9 #pragma warning 指令 503
第 25 章 反射和特性 504
25.1 元數(shù)據(jù)和反射 504
25.2 Type 類 505
25.3 獲取Type 對象 506
25.4 什么是特性 508
25.5 應(yīng)用特性 509
25.6 預(yù)定義的保留特性 509
25.6.1 Obsolete 特性 509
25.6.2 Conditional 特性 510
25.6.3 調(diào)用者信息特性 512
25.6.4 DebuggerStepThrough 特性 513
25.6.5 其他預(yù)定義特性 514
25.7 關(guān)于應(yīng)用特性的更多內(nèi)容 514
25.7.1 多個特性 514
25.7.2 其他類型的目標(biāo) 515
25.7.3 全局特性 515
25.8 自定義特性 516
25.8.1 聲明自定義特性 516
25.8.2 使用特性的構(gòu)造函數(shù) 516
25.8.3 指定構(gòu)造函數(shù) 517
25.8.4 使用構(gòu)造函數(shù) 517
25.8.5 構(gòu)造函數(shù)中的位置參數(shù)和命名參數(shù) 518
25.8.6 限制特性的使用 518
25.8.7 自定義特性的最佳實(shí)踐 520
25.9 訪問特性 520
25.9.1 使用IsDefined 方法 520
25.9.2 使用GetCustomAttributes方法 521
第 26 章 C# 6.0 和C# 7.0 新增的內(nèi)容 523
26.1 新增內(nèi)容概述 524
26.2 字符串插值(C# 6.0) 524
26.3 自動屬性初始化語句 525
26.4 只讀自動屬性(C# 6.0) 526
26.5 表達(dá)式函數(shù)體成員(C# 6.0 和
C# 7.0) 526
26.6 using static(C# 6.0) 527
26.7 空條件運(yùn)算符(C# 6.0) 528
26.8 在catch 和finally 塊中使用await(C# 6.0) 528
26.9 nameof 運(yùn)算符(C# 6.0) 529
26.10 異常過濾器(C# 6.0) 529
26.11 索引初始化語句(C# 6.0) 530
26.12 集合初始化語句的擴(kuò)展方法(C# 6.0) 532
26.13 改進(jìn)的重載決策(C# 6.0) 533
26.14 值元組(C# 7.0) 534
26.15 is 模式匹配(C# 7.0) 534
26.16 switch 模式匹配(C# 7.0) 536
26.17 自定義析構(gòu)函數(shù)(C# 7.0) 538
26.18 二進(jìn)制字面量和數(shù)字分隔符(C# 7.0) 540
26.19 out 變量(C# 7.0) 541
26.20 局部函數(shù)(C# 7.0) 542
26.21 ref 局部變量(ref 變量)和
ref 返回(C# 7.0) 544
26.22 表達(dá)式函數(shù)體成員的擴(kuò)展(C# 7.0) 544
26.23 throw 表達(dá)式(C# 7.0) 545
26.24 擴(kuò)展的async 返回類型(C# 7.0) 545
第 27 章 其他主題 546
27.1 概述 546
27.2 字符串 546
27.3 StringBuilder 類 548
27.4 把字符串解析為數(shù)據(jù)值 549
27.5 關(guān)于可空類型的更多內(nèi)容 550
27.5.1 為可空類型賦值 552
27.5.2 使用空接合運(yùn)算符 552
27.5.3 空條件運(yùn)算符 553
27.5.4 使用可空用戶定義類型 555
27.6 Main 方法 556
27.7 文檔注釋 558
27.7.1 插入文檔注釋 558
27.7.2 使用其他XML 標(biāo)簽 559
27.8 嵌套類型 559
27.8.1 嵌套類的示例 560
27.8.2 可見性和嵌套類型 561
27.9 析構(gòu)函數(shù)和dispose 模式 563
27.9.1 標(biāo)準(zhǔn)dispose 模式 564
27.9.2 比較構(gòu)造函數(shù)和析構(gòu)函數(shù) 566
27.10 Tuple 和ValueTuple 566
27.11 和COM 的互操作 568