注冊(cè) | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)C/C++及其相關(guān)深入理解C#(第2版)

深入理解C#(第2版)

深入理解C#(第2版)

定 價(jià):¥79.00

作 者: (英) Jon Skeet 著,周 靖 ,朱永光, 姚琪琳 譯
出版社: 人民郵電出版社
叢編項(xiàng):
標(biāo) 簽: VC++

ISBN: 9787115269249 出版時(shí)間: 2012-01-01 包裝: 平裝
開本: 16開 頁(yè)數(shù): 445 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  《深入理解C#(第2版)》是C#領(lǐng)域不可多得的經(jīng)典著作。作者在詳盡地展示C#各個(gè)知識(shí)點(diǎn)的同時(shí),更注重從現(xiàn)象中挖掘本質(zhì)?!渡钊肜斫釩#(第2版)》深入探索了C#的核心概念和經(jīng)典特性,并將這些特性融入到代碼中,讓讀者能夠真正領(lǐng)會(huì)到C#之“深入”與“精妙”。在第1版的基礎(chǔ)上,書中新增了C# 4的新特性,如動(dòng)態(tài)類型、命名實(shí)參和可選參數(shù)等,這些特性將C#語(yǔ)言提升到了一個(gè)新的層次。 《深入理解C#(第2版)》適合中高級(jí).NET開發(fā)人員閱讀。

作者簡(jiǎn)介

暫缺《深入理解C#(第2版)》作者簡(jiǎn)介

圖書目錄

第一部分  基礎(chǔ)知識(shí)
第1 章  C#開發(fā)的進(jìn)化史   2
1.1  從簡(jiǎn)單的數(shù)據(jù)類型開始   3
1.1.1  C# 1 中定義的產(chǎn)品類型   3
1.1.2  C# 2 中的強(qiáng)類型集合  4
1.1.3  C# 3 中自動(dòng)實(shí)現(xiàn)的屬性   5
1.1.4  C# 4 中的命名實(shí)參   6
1.2  排序和過(guò)濾   7
1.2.1  按名稱對(duì)產(chǎn)品進(jìn)行排序   7
1.2.2  查詢集合   10
1.3  處理未知數(shù)據(jù)   11
1.3.1  表示未知的價(jià)格   12
1.3.2  可選參數(shù)和默認(rèn)值   12
1.4  LINQ 簡(jiǎn)介   13
1.4.1  查詢表達(dá)式和進(jìn)程內(nèi)查詢   13
1.4.2  查詢XML   14
1.4.3  LINQ to SQL    15
1.5  COM 和動(dòng)態(tài)類型   16
1.5.1  簡(jiǎn)化COM 互操作   16
1.5.2  與動(dòng)態(tài)語(yǔ)言互操作   17
1.6  剖析.NET 平臺(tái)   18
1.6.1  C#語(yǔ)言   18
1.6.2  運(yùn)行時(shí)   19
1.6.3  框架庫(kù)   19
1.7  怎樣寫出超炫的代碼   19
1.7.1  采用代碼段形式的全能代碼   20
1.7.2  教學(xué)代碼不是產(chǎn)品代碼   21
1.7.3  你的新朋友:語(yǔ)言規(guī)范   21
1.8  小結(jié)   21
第2 章  C# 1 所搭建的核心基礎(chǔ)   23
2.1  委托   23
2.1.1  簡(jiǎn)單委托的構(gòu)成   24
2.1.2  合并和刪除委托   28
2.1.3  對(duì)事件的簡(jiǎn)單討論   29
2.1.4  委托小結(jié)   30
2.2  類型系統(tǒng)的特征   31
2.2.1  C#在類型系統(tǒng)世界中的位置   31
2.2.2  C# 1 的類型系統(tǒng)在什么時(shí)候不夠用   34
2.2.3  類型系統(tǒng)特征總結(jié)   36
2.3  值類型和引用類型   36
2.3.1  現(xiàn)實(shí)世界中的值和引用   36
2.3.2  值類型和引用類型基礎(chǔ)知識(shí)   37
2.3.3  走出誤區(qū)   38
2.3.4  裝箱和拆箱   40
2.3.5  值類型和引用類型小結(jié)   41
2.4  C# 1 之外:構(gòu)建于堅(jiān)實(shí)基礎(chǔ)之上的新特性   41
2.4.1  與委托有關(guān)的特性   41
2.4.2  與類型系統(tǒng)有關(guān)的特性   43
2.4.3  與值類型有關(guān)的特性   45
2.5  小結(jié)   46
第二部分  C# 2:解決C# 1 的問(wèn)題
第3 章  用泛型實(shí)現(xiàn)參數(shù)化類型   48
3.1  為什么需要泛型   49
3.2  日常使用的簡(jiǎn)單泛型   50
3.2.1  通過(guò)例子來(lái)學(xué)習(xí):泛型字典   50
3.2.2  泛型類型和類型參數(shù)   52
3.2.3  泛型方法和判讀泛型聲明   55
3.3  深化與提高   58
3.3.1  類型約束   58
3.3.2  泛型方法類型實(shí)參的類型推斷   62
3.3.3  實(shí)現(xiàn)泛型   63
3.4  高級(jí)泛型   68
3.4.1  靜態(tài)字段和靜態(tài)構(gòu)造函數(shù)   69
3.4.2  JIT 編譯器如何處理泛型   70
3.4.3  泛型迭代   72
3.4.4  反射和泛型   74
3.5  泛型在C#和其他語(yǔ)言中的限制   78
3.5.1  泛型可變性的缺乏   78
3.5.2  缺乏操作符約束或者“數(shù)值”約束   82
3.5.3  缺乏泛型屬性、索引器和其他成員類型   83
3.5.4  同C++模板的對(duì)比   84
3.5.5  和Java 泛型的對(duì)比   85
3.6  小結(jié)   86
第4 章  可空類型   88
4.1  沒有值時(shí)怎么辦   88
4.1.1  為什么值類型的變量不能是null    89
4.1.2  在C# 1 中表示空值的模式   89
4.2  System.Nullable和System.Nullable    91
4.2.1  Nullable簡(jiǎn)介   91
4.2.2  Nullable裝箱和拆箱   94
4.2.3  Nullable實(shí)例的相等性   95
4.2.4  來(lái)自非泛型Nullable 類的支持   96
4.3  C# 2 為可空類型提供的語(yǔ)法糖   96
4.3.1  ?修飾符   97
4.3.2  使用null 進(jìn)行賦值和比較   98
4.3.3  可空轉(zhuǎn)換和操作符   99
4.3.4  可空邏輯   102
4.3.5  對(duì)可空類型使用as 操作符   103
4.3.6  空合并操作符   104
4.4  可空類型的新奇用法   106
4.4.1  嘗試一個(gè)不使用輸出參數(shù)的操作   107
4.4.2  空合并操作符讓比較不再痛苦   108
4.5  小結(jié)   111
第5 章  進(jìn)入快速通道的委托   112
5.1  向笨拙的委托語(yǔ)法說(shuō)拜拜   113
5.2  方法組轉(zhuǎn)換   114
5.3  協(xié)變性和逆變性   115
5.3.1  委托參數(shù)的逆變性   116
5.3.2  委托返回類型的協(xié)變性   117
5.3.3  不兼容的風(fēng)險(xiǎn)   118
5.4  使用匿名方法的內(nèi)聯(lián)委托操作   119
5.4.1  從簡(jiǎn)單的開始:處理一個(gè)參數(shù)   119
5.4.2  匿名方法的返回值   121
5.4.3  忽略委托參數(shù)   123
5.5  在匿名方法中捕捉變量   124
5.5.1  定義閉包和不同的變量類型   124
5.5.2  測(cè)試被捕獲的變量的行為   126
5.5.3  捕獲變量到底有什么用處   127
5.5.4  捕獲變量的延長(zhǎng)生存期   127
5.5.5  局部變量實(shí)例化   128
5.5.6  共享和非共享的變量混合使用   130
5.5.7  捕獲變量的使用規(guī)則和小結(jié)   132
5.6  小結(jié)   133
第6 章  實(shí)現(xiàn)迭代器的捷徑   134
6.1  C# 1:手寫迭代器的痛苦   135
6.2  C# 2:利用yield 語(yǔ)句簡(jiǎn)化迭代器   137
6.2.1  迭代器塊和yield return簡(jiǎn)介   137
6.2.2  觀察迭代器的工作流程   139
6.2.3  進(jìn)一步了解迭代器執(zhí)行流程   141
6.2.4  具體實(shí)現(xiàn)中的奇特之處   144
6.3  真實(shí)的例子:迭代范圍值   145
6.3.1  迭代時(shí)刻表中的日期   145
6.3.2  迭代文件中的行   146
6.3.3  使用迭代器塊和謂詞對(duì)項(xiàng)進(jìn)行延遲篩選   148
6.4  使用CCR 實(shí)現(xiàn)偽同步代碼   150
6.5  小結(jié)   152
第7 章  結(jié)束C# 2 的講解:最后的一些特性   153
7.1  分部類型  154
7.1.1  在多個(gè)文件中創(chuàng)建一個(gè)類型   154
7.1.2  分部類型的使用   156
7.1.3  C# 3 獨(dú)有的分部方法   157
7.2  靜態(tài)類型   159
7.3  獨(dú)立的取值方法/賦值方法屬性訪問(wèn)器  161
7.4  命名空間別名  162
7.4.1  限定的命名空間別名   163
7.4.2  全局命名空間別名   164
7.4.3  外部別名   164
7.5  Pragma 指令   166
7.5.1  警告pragma   166
7.5.2  校驗(yàn)和pragma   167
7.6  非安全代碼中的固定大小的緩沖區(qū)   167
7.7  把內(nèi)部成員暴露給選定的程序集   169
7.7.1  在簡(jiǎn)單情況下的友元程序集   169
7.7.2  為什么使用InternalsVisibleTo    170
7.7.3  InternalsVisibleTo 和簽名程序集   170
7.8  小結(jié)   171
第三部分  C# 3:革新寫代碼的方式
第8 章  用智能的編譯器來(lái)防錯(cuò)   174
8.1  自動(dòng)實(shí)現(xiàn)的屬性   175
8.2  隱式類型的局部變量   176
8.2.1  用var 聲明局部變量   177
8.2.2  隱式類型的限制   178
8.2.3  隱式類型的優(yōu)缺點(diǎn)   179
8.2.4  建議   180
8.3  簡(jiǎn)化的初始化   180
8.3.1  定義示例類型   181
8.3.2  設(shè)置簡(jiǎn)單屬性   182
8.3.3  為嵌入對(duì)象設(shè)置屬性   183
8.3.4  集合初始化列表   184
8.3.5  初始化特性的應(yīng)用   186
8.4  隱式類型的數(shù)組   187
8.5  匿名類型   188
8.5.1  第一次邂逅匿名類型   188
8.5.2  匿名類型的成員   190
8.5.3  投影初始化列表   191
8.5.4  重點(diǎn)何在   192
8.6  小結(jié)  193
第9 章  Lambda 表達(dá)式和表達(dá)式樹   194
9.1  作為委托的Lambda 表達(dá)式   195
9.1.1  準(zhǔn)備工作:Func<  >委托類型簡(jiǎn)介   195
9.1.2  第一次轉(zhuǎn)換成Lambda表達(dá)式   196
9.1.3  用單一表達(dá)式作為主體   197
9.1.4  隱式類型的參數(shù)列表   197
9.1.5  單一參數(shù)的快捷語(yǔ)法   198
9.2  使用List和事件的簡(jiǎn)單例子   199
9.2.1  對(duì)列表進(jìn)行篩選、排序并設(shè)置其他操作   199
9.2.2  在事件處理程序中進(jìn)行記錄   201
9.3  表達(dá)式樹   202
9.3.1  在程序中構(gòu)建表達(dá)式樹   202
9.3.2  將表達(dá)式樹編譯成委托   204
9.3.3  將C# Lambda 表達(dá)式轉(zhuǎn)換成表達(dá)式樹   205
9.3.4  位于LINQ 核心的表達(dá)式樹   208
9.3.5  LINQ 之外的表達(dá)式樹   209
9.4  類型推斷和重載決策發(fā)生的改變   211
9.4.1  改變的起因:精簡(jiǎn)泛型方法調(diào)用   211
9.4.2  推斷匿名函數(shù)的返回類型   212
9.4.3  分兩個(gè)階段進(jìn)行的類型推斷   213
9.4.4  選擇正確的被重載的方法   217
9.4.5  類型推斷和重載決策   218
9.5  小結(jié)   219
第10 章  擴(kuò)展方法   220
10.1  未引入擴(kuò)展方法之前的狀態(tài)   221
10.2  擴(kuò)展方法的語(yǔ)法   223
10.2.1  聲明擴(kuò)展方法   223
10.2.2  調(diào)用擴(kuò)展方法   224
10.2.3  擴(kuò)展方法是怎樣被發(fā)現(xiàn)的   225
10.2.4  在空引用上調(diào)用方法   226
10.3 . NET 3.5 中的擴(kuò)展方法   227
10.3.1  從Enumerable 開始起步   228
10.3.2  用Where 篩選并將方法調(diào)用鏈接到一起   229
10.3.3  插曲:似曾相識(shí)的Where方法   231
10.3.4  用Select 方法和匿名類型進(jìn)行投影   232
10.3.5  用OrderBy 方法進(jìn)行排序   232
10.3.6  涉及鏈接的實(shí)際例子   234
10.4  使用思路和原則   235
10.4.1  “擴(kuò)展世界”和使接口更豐富   235
10.4.2  流暢接口   236
10.4.3  理智使用擴(kuò)展方法   237
10.5  小結(jié)   238
第11 章  查詢表達(dá)式和LINQ to Objects    240
11.1  LINQ 介紹   241
11.1.1  LINQ 中的基礎(chǔ)概念   241
11.1.2  定義示例數(shù)據(jù)模型   245
11.2  簡(jiǎn)單的開始:選擇元素   246
11.2.1  以數(shù)據(jù)源作為開始,以選擇作為結(jié)束   246
11.2.2  作為查詢表達(dá)式基礎(chǔ)的編譯器轉(zhuǎn)換   247
11.2.3  范圍變量和重要的投影   249
11.2.4  Cast、OfType 和顯式類型的范圍變量   251
11.3  對(duì)序列進(jìn)行過(guò)濾和排序   252
11.3.1  使用where 子句進(jìn)行過(guò)濾   253
11.3.2  退化的查詢表達(dá)式   253
11.3.3  使用orderby 子句進(jìn)行排序   254
11.4  let 子句和透明標(biāo)識(shí)符   256
11.4.1  用let 來(lái)進(jìn)行中間計(jì)算   256
11.4.2  透明標(biāo)識(shí)符   257
11.5  聯(lián)接   258
11.5.1  使用join 子句的內(nèi)聯(lián)接   258
11.5.2  使用join  into 子句進(jìn)行分組聯(lián)接   262
11.5.3  使用多個(gè)from 子句進(jìn)行交叉聯(lián)接和合并序列   264
11.6  分組和延續(xù)   267
11.6.1  使用group  by 子句進(jìn)行分組   267
11.6.2  查詢延續(xù)   270
11.7  在查詢表達(dá)式和點(diǎn)標(biāo)記之間作出選擇   272
11.7.1  需要使用點(diǎn)標(biāo)記的操作   273
11.7.2  選擇點(diǎn)標(biāo)記   273
11.7.3  選擇查詢表達(dá)式   274
11.8  小結(jié)   275
第12 章  超越集合的LINQ   276
12.1  使用LINQ to SQL 查詢數(shù)據(jù)庫(kù)   277
12.1.1  數(shù)據(jù)庫(kù)和模型   277
12.1.2  用查詢表達(dá)式訪問(wèn)數(shù)據(jù)庫(kù)   279
12.1.3  包含聯(lián)接的查詢   281
12.2  用IQueryable 和IQueryProvider 進(jìn)行轉(zhuǎn)換   283
12.2.1  IQueryable和相關(guān)接口的介紹   283
12.2.2  模擬接口實(shí)現(xiàn)來(lái)記錄調(diào)用   285
12.2.3  把表達(dá)式粘合在一起:Queryable 的擴(kuò)展方法   287
12.2.4  模擬實(shí)際運(yùn)行的查詢提供器   289
12.2.5  包裝IQueryable   290
12.3  LINQ 友好的API 和LINQ to XML   290
12.3.1  LINQ to XML 中的核心類型   290
12.3.2  聲明式構(gòu)造   292
12.3.3  查詢單個(gè)節(jié)點(diǎn)   294
12.3.4  合并查詢操作符   296
12.3.5  與LINQ 和諧共處   297
12.4  用并行LINQ 代替LINQ to Objects   297
12.4.1  在單線程中繪制曼德博羅特集   297
12.4.2  ParallelEnumerable、Parallel-Query 和AsParallel   299
12.4.3  調(diào)整并行查詢   300
12.5  使用LINQ to Rx 反轉(zhuǎn)查詢模型   301
12.5.1  IObservable和IObserver   302
12.5.2  簡(jiǎn)單地開始   303
12.5.3  查詢可觀察對(duì)象  304
12.5.4  意義何在   306
12.6  擴(kuò)展LINQ to Objects   306
12.6.1  設(shè)計(jì)和實(shí)現(xiàn)指南   307
12.6.2  示例擴(kuò)展:選擇隨機(jī)元素   308
12.7  小結(jié)   309
第四部分  C# 4:良好的交互性
第13 章  簡(jiǎn)化代碼的微小修改   312
13.1  可選參數(shù)和命名實(shí)參   312
13.1.1  可選參數(shù)   313
13.1.2  命名實(shí)參   317
13.1.3  兩者相結(jié)合   321
13.2  改善COM 互操作性   324
13.2.1  在C# 4 之前操縱Word是十分恐怖的   325
13.2.2  可選參數(shù)和命名實(shí)參的復(fù)仇   325
13.2.3  按值傳遞ref 參數(shù)   326
13.2.4  調(diào)用命名索引器   327
13.2.5  鏈接主互操作程序集   328
13.3  接口和委托的泛型可變性   330
13.3.1  可變性的種類:協(xié)變性和逆變性  331
13.3.2  在接口中使用可變性   332
13.3.3  在委托中使用可變性   334
13.3.4  復(fù)雜情況   335
13.3.5  限制和說(shuō)明   336
13.4  對(duì)鎖和字段風(fēng)格的事件的微小改變   339
13.4.1  健壯的鎖   339
13.4.2  字段風(fēng)格的事件   340
13.5  小結(jié)   341
第14 章  靜態(tài)語(yǔ)言中的動(dòng)態(tài)綁定   342
14.1  何謂,何時(shí),為何,如何   343
14.1.1  何謂動(dòng)態(tài)類型   343
14.1.2  動(dòng)態(tài)類型什么時(shí)候有用,為什么   344
14.1.3  C# 4 如何提供動(dòng)態(tài)類型   345
14.2  關(guān)于動(dòng)態(tài)的快速指南   345
14.3  動(dòng)態(tài)類型示例   348
14.3.1  COM 和Office    348
14.3.2  動(dòng)態(tài)語(yǔ)言   350
14.3.3  純托管代碼中的動(dòng)態(tài)類型   353
14.4  幕后原理   358
14.4.1  DLR 簡(jiǎn)介   358
14.4.2  DLR 核心概念   360
14.4.3  C#編譯器如何處理動(dòng)態(tài)   362
14.4.4  更加智能的C#編譯器   365
14.4.5  動(dòng)態(tài)代碼的約束   368
14.5  實(shí)現(xiàn)動(dòng)態(tài)行為   370
14.5.1  使用ExpandoObject   370
14.5.2  使用DynamicObject   374
14.5.3  實(shí)現(xiàn)IDynamicMetaObject-Provider   380
14.6  小結(jié)  383
第15 章  使用契約讓代碼更加清晰   385
15.1  未引入代碼契約之前的狀態(tài)   386
15.2  代碼契約   387
15.2.1  前置條件   388
15.2.2  后置條件   389
15.2.3  固定條件   390
15.2.4  斷言和假設(shè)   392
15.2.5  舊式契約   393
15.3  使用ccrewrite 和ccrefgen 重寫二進(jìn)制   394
15.3.1  簡(jiǎn)單重寫   394
15.3.2  契約繼承   395
15.3.3  契約引用程序集   398
15.3.4  失敗行為   399
15.4  靜態(tài)檢查   401
15.4.1  開始靜態(tài)檢查   401
15.4.2  隱式職責(zé)   403
15.4.3  有選擇性的檢查   406
15.5  使用ccdocgen 將契約文檔化   408
15.6  契約實(shí)戰(zhàn)   410
15.6.1  契約中有什么   410
15.6.2  如何開始   411
15.6.3  無(wú)處不在的選項(xiàng)   412
15.7  小結(jié)   414
第16 章  何去何從   415
16.1  C#——傳統(tǒng)與現(xiàn)代的結(jié)合   415
16.2  計(jì)算機(jī)科學(xué)和.NET   416
16.3  計(jì)算機(jī)世界   417
16.4  再會(huì)   417
附錄A  LINQ 標(biāo)準(zhǔn)查詢操作符   419
附錄B  .NET 中的泛型集合   430
附錄C  版本總結(jié)   440

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)