《深入理解C#(第3版)》


《深入理解C#(第3版)》

基本信息

原書名:C# in depth

作者: (英)Jon Skeet   

譯者: 姚琪琳

叢書名: 圖靈程序設計叢書

出版社:人民郵電出版社

ISBN:9787115346421

上架時間:2014-3-11

出版日期:2014 年4月

開本:16開

頁碼:1

版次:1-1

所屬分類:計算機 > 軟件與程序設計 > C/Turbo C > 綜合

 

更多關於》》》《深入理解C#(第3版)》

 

編輯推薦

    資深C# MVP扛鼎之作

  深入理解語言特性,探究本源

   .NET開發人員必讀經典

 

內容簡介

    書籍

    計算機書籍

  《深入理解c#(第3版)》是c# 領域不可多得的經典著作。作者在詳盡地展示c# 各個知識點的同時,更注重從現象中挖掘本質。本書深入探索了c# 的核心概念和經典特性,並將這些特性融入到代碼中,讓讀者能夠真正領會到c# 之“深入”與“精妙”。在第2 版的基礎上,本書新增了c# 5 的新特性——異步,並更新了隨着技術的發展,已經不再適用的內容,確保整本書能達到讀者期望的高標准。

  如果你略微了解一點c#,就可無障礙地閱讀本書。

 

媒體評論

  “學習C#語言特性的最佳資源。”

  ——Andy Kirsch,Venga

  “本書使我的C#水平更上一層樓。”

  ——Dustin Laine,Code Harvest

  “每一位.NET開發人員都至少應該閱讀一遍的案頭必備圖書。”

  ——Dror Helper,Better Place

  “本書無疑是我讀過的最佳C#參考書。”

  ——Jon Parish,Datasift

 

 

目錄

《深入理解c#(第3版)》

第一部分 基礎知識

第1章 c#開發的進化史  2

1.1 從簡單的數據類型開始  3

1.1.1 c# 1中定義的產品類型  3

1.1.2 c# 2中的強類型集合  4

1.1.3 c# 3中自動實現的屬性  5

1.1.4 c# 4中的命名實參  6

1.2 排序和過濾  7

1.2.1 按名稱對產品進行排序  7

1.2.2 查詢集合  10

1.3 處理未知數據  12

1.3.1 表示未知的價格  12

1.3.2 可選參數和默認值  13

1.4 linq簡介  14

1.4.1 查詢表達式和進程內查詢  14

1.4.2 查詢xml  15

1.4.3 linq to sql  16

1.5 com和動態類型  17

1.5.1 簡化com互操作  17

1.5.2 與動態語言互操作  18

1.6 輕松編寫異步代碼  19

1.7 剖析.net平台  20

1.7.1 c#語言  20

1.7.2 運行時  21

1.7.3 框架庫  21

1.8 怎樣寫出超炫的代碼  22

1.8.1 采用代碼段形式的全能代碼  22

1.8.2 教學代碼不是產品代碼  23

1.8.3 你的新朋友:語言規范  23

1.9 小結  24

第2章 c# 1所搭建的核心基礎  25

2.1 委托  25

2.1.1 簡單委托的構成  26

2.1.2 合並和刪除委托  30

2.1.3 對事件的簡單討論  32

2.1.4 委托總結  33

2.2 類型系統的特征  33

2.2.1 c#在類型系統世界中的位置  34

2.2.2 c# 1的類型系統何時不夠用  36

2.2.3 類型系統特征總結  39

2.3 值類型和引用類型  39

2.3.1 現實世界中的值和引用  39

2.3.2 值類型和引用類型基礎知識  40

2.3.3 走出誤區  41

2.3.4 裝箱和拆箱  43

2.3.5 值類型和引用類型小結  44

2.4 c# 1之外:構建於堅實基礎之上的新特性  44

2.4.1 與委托有關的特性  44

2.4.2 與類型系統有關的特性  46

2.4.3 與值類型有關的特性  48

2.5 小結  49

第二部分 c# 2 :解決c# 1 的問題

第3章 用泛型實現參數化類型  52

3.1 為什么需要泛型  53

3.2 日常使用的簡單泛型  54

3.2.1 通過例子來學習:泛型字典  54

3.2.2 泛型類型和類型參數  56

3.2.3 泛型方法和判讀泛型聲明  59

3.3 深化與提高  62

3.3.1 類型約束  62

3.3.2 泛型方法類型實參的類型推斷  67

3.3.3 實現泛型  68

3.4 高級泛型  73

3.4.1 靜態字段和靜態構造函數  73

3.4.2 jit編譯器如何處理泛型  75

3.4.3 泛型迭代  77

3.4.4 反射和泛型  79

3.5 泛型在c#和其他語言中的限制  82

3.5.1 泛型可變性的缺乏  83

3.5.2 缺乏操作符約束或者“數值”約束  87

3.5.3 缺乏泛型屬性、索引器和其他成員類型  88

3.5.4 同c++模板的對比  89

3.5.5 和java泛型的對比  90

3.6 小結  91

第4章 可空類型  93

4.1 沒有值時怎么辦  93

4.1.1 為什么值類型的變量不能是null  94

4.1.2 在c# 1中表示空值的模式  94

4.2 system.nullable(t)和system.nullable  96

4.2.1 nullable(t)簡介  96

4.2.2 nullable(t)裝箱和拆箱  99

4.2.3 nullable(t)實例的相等性  100

4.2.4 來自非泛型nullable類的支持  101

4.3 c# 2為可空類型提供的語法糖  101

4.3.1 ?修飾符  102

4.3.2 使用null進行賦值和比較  103

4.3.3 可空轉換和操作符  105

4.3.4 可空邏輯  108

4.3.5 對可空類型使用as操作符  109

4.3.6 空合並操作符  110

4.4 可空類型的新奇用法  112

4.4.1 嘗試一個不使用輸出參數的操作  113

4.4.2 空合並操作符讓比較不再痛苦  115

4.5 小結  117

第5章 進入快速通道的委托  118

5.1 向笨拙的委托語法說拜拜  119

5.2 方法組轉換  120

5.3 協變性和逆變性  122

5.3.1 委托參數的逆變性  122

5.3.2 委托返回類型的協變性  123

5.3.3 不兼容的風險  124

5.4 使用匿名方法的內聯委托操作  125

5.4.1 從簡單的開始:處理一個參數  126

5.4.2 匿名方法的返回值  128

5.4.3 忽略委托參數  129

5.5 匿名方法中的捕獲變量  131

5.5.1 定義閉包和不同類型的變量  131

5.5.2 捕獲變量的行為  132

5.5.3 捕獲變量到底有什么用處  133

5.5.4 捕獲變量的延長生存期  134

5.5.5 局部變量實例化  135

5.5.6 共享和非共享的變量混合使用  137

5.5.7 捕獲變量的使用規則和小結  139

5.6 小結  140

第6章 實現迭代器的捷徑  141

6.1 c# 1:手寫迭代器的痛苦  142

6.2 c# 2:利用yield語句簡化迭代器  144

6.2.1 迭代器塊和yield return簡介  145

6.2.2 觀察迭代器的工作流程  146

6.2.3 進一步了解迭代器執行流程  148

6.2.4 具體實現中的奇特之處  151

6.3 真實的迭代器示例  152

6.3.1 迭代時刻表中的日期  152

6.3.2 迭代文件中的行  153

6.3.3 使用迭代器塊和謂詞對項進行延遲過濾  156

6.4 使用ccr實現偽同步代碼  157

6.5 小結  160

第7章 結束c# 2的講解:最后的一些特性  161

7.1 分部類型  162

7.1.1 在多個文件中創建一個類型  162

7.1.2 分部類型的使用  164

7.1.3 c# 3獨有的分部方法  166

7.2 靜態類型  167

7.3 獨立的取值方法/賦值方法屬性訪問器  169

7.4 命名空間別名  170

7.4.1 限定的命名空間別名  171

7.4.2 全局命名空間別名  172

7.4.3 外部別名  173

7.5 pragma指令  174

7.5.1 警告pragma  174

7.5.2 校驗和pragma  175

7.6 非安全代碼中固定大小的緩沖區  176

7.7 把內部成員暴露給選定的程序集  178

7.7.1 簡單情況下的友元程序集  178

7.7.2 為什么使用internals-visibleto  179

7.7.3 internalsvisibleto和簽名程序集  179

7.8 小結  180

第三部分 c# 3 :革新寫代碼的方式

第8章 用智能的編譯器來防錯  182

8.1 自動實現的屬性  183

8.2 隱式類型的局部變量  185

8.2.1 用var聲明局部變量  185

8.2.2 隱式類型的限制  187

8.2.3 隱式類型的優缺點  188

8.2.4 建議  189

8.3 簡化的初始化  190

8.3.1 定義示例類型  190

8.3.2 設置簡單屬性  191

8.3.3 為嵌入對象設置屬性  192

8.3.4 集合初始化程序  193

8.3.5 初始化特性的應用  196

8.4 隱式類型的數組  197

8.5 匿名類型  198

8.5.1 第一次邂逅匿名類型  198

8.5.2 匿名類型的成員  200

8.5.3 投影初始化程序  201

8.5.4 重點何在  202

8.6 小結  203

第9章 lambda表達式和表達式樹  204

9.1 作為委托的lambda表達式  205

9.1.1 准備工作:func(...)委托類型簡介  205

9.1.2 第一次轉換成lambda表達式  206

9.1.3 用單一表達式作為主體  207

9.1.4 隱式類型的參數列表  207

9.1.5 單一參數的快捷語法  208

9.2 使用list(t)和事件的簡單例子  209

9.2.1 列表的過濾、排序和操作  210

9.2.2 在事件處理程序中進行記錄  211

9.3 表達式樹  212

9.3.1 以編程方式構建表達式樹  213

9.3.2 將表達式樹編譯成委托  214

9.3.3 將c# lambda表達式轉換成表達式樹  215

9.3.4 位於linq核心的表達式樹  218

9.3.5 linq之外的表達式樹  220

9.4 類型推斷和重載決策的改變  221

9.4.1 改變的起因:精簡泛型方法調用  221

9.4.2 推斷匿名函數的返回類型  222

9.4.3 分兩個階段進行的類型推斷  223

9.4.4 選擇正確的被重載的方法  227

9.4.5 類型推斷和重載決策  229

9.5 小結  229

第10章 擴展方法  230

10.1 未引入擴展方法之前的狀態  231

10.2 擴展方法的語法  233

10.2.1 聲明擴展方法  233

10.2.2 調用擴展方法  234

10.2.3 擴展方法是怎樣被發現的  235

10.2.4 在空引用上調用方法  236

10.3 .net 3.5中的擴展方法  238

10.3.1 從enumerable開始起步  238

10.3.2 用where過濾並將方法調用鏈接到一起  240

10.3.3 插曲:似曾相識的where方法  241

10.3.4 用select方法和匿名類型進行投影  242

10.3.5 用orderby方法進行排序  243

10.3.6 涉及鏈接的實際例子  244

10.4 使用思路和原則  245

10.4.1 “擴展世界”和使接口更豐富  246

10.4.2 流暢接口  246

10.4.3 理智使用擴展方法  248

10.5 小結  249

第11章 查詢表達式和linq to objects  250

11.1 linq介紹  251

11.1.1 linq中的基礎概念  251

11.1.2 定義示例數據模型  255

11.2 簡單的開始:選擇元素  256

11.2.1 以數據源作為開始,以選擇作為結束  257

11.2.2 編譯器轉譯是查詢表達式基礎的轉譯  257

11.2.3 范圍變量和重要的投影  260

11.2.4 cast、oftype和顯式類型的范圍變量  262

11.3 對序列進行過濾和排序  264

11.3.1 使用where子句進行過濾  264

11.3.2 退化的查詢表達式  265

11.3.3 使用orderby子句進行排序  265

11.4 let子句和透明標識符  267

11.4.1 用let來進行中間計算  267

11.4.2 透明標識符  268

11.5 連接  270

11.5.1 使用join子句的內連接  270

11.5.2 使用join...into子句進行分組連接  274

11.5.3 使用多個from子句進行交叉連接和合並序列  276

11.6 分組和延續  279

11.6.1 使用group...by子句進行分組  279

11.6.2 查詢延續  282

11.7 在查詢表達式和點標記之間作出選擇  285

11.7.1 需要使用點標記的操作  285

11.7.2 使用點標記可能會更簡單的查詢表達式  286

11.7.3 選擇查詢表達式  286

11.8 小結  287

第12章 超越集合的linq  289

12.1 使用linq to sql查詢數據庫  290

12.1.1 數據庫和模型  290

12.1.2 用查詢表達式訪問數據庫  292

12.1.3 包含連接的查詢  294

12.2 用iqueryable和iqueryprovider進行轉換  296

12.2.1 iqueryable(t)和相關接口的介紹  297

12.2.2 模擬接口實現來記錄調用  298

12.2.3 把表達式粘合在一起:queryable的擴展方法  300

12.2.4 模擬實際運行的查詢提供器  302

12.2.5 包裝iqueryable  303

12.3 linq友好的api和linq to xml  303

12.3.1 linq to xml中的核心類型  304

12.3.2 聲明式構造  305

12.3.3 查詢單個節點  308

12.3.4 合並查詢操作符  309

12.3.5 與linq和諧共處  310

12.4 用並行linq代替linq to objects  311

12.4.1 在單線程中繪制曼德博羅特集  311

12.4.2 parallelenumerable、parallelquery和asparallel  313

12.4.3 調整並行查詢  315

12.5 使用linq to rx反轉查詢模型  316

12.5.1 iobservable(t)和iobserver(t)  316

12.5.2 簡單的開始  318

12.5.3 查詢可觀察對象  319

12.5.4 意義何在  321

12.6 擴展linq to objects  321

12.6.1 設計和實現指南  322

12.6.2 示例擴展:選擇隨機元素  323

12.7 小結  324

第四部分 c# 4 :良好的交互性

第13章 簡化代碼的微小修改  328

13.1 可選參數和命名實參  328

13.1.1 可選參數  329

13.1.2 命名實參  334

13.1.3 兩者相結合  337

13.2 改善com互操作性  341

13.2.1 在c# 4之前操縱word是十分恐怖的  342

13.2.2 可選參數和命名實參的復仇  342

13.2.3 按值傳遞ref參數  343

13.2.4 調用命名索引器  344

13.2.5 鏈接主互操作程序集  345

13.3 接口和委托的泛型可變性  348

13.3.1 可變性的種類:協變性和逆變性  348

13.3.2 在接口中使用可變性  349

13.3.3 在委托中使用可變性  352

13.3.4 復雜情況  353

13.3.5 限制和說明  354

13.4 對鎖和字段風格的事件的微小改變  357

13.4.1 健壯的鎖  357

13.4.2 字段風格的事件  358

13.5 小結  359

第14章 靜態語言中的動態綁定  360

14.1 何謂、何時、為何、如何  361

14.1.1 何謂動態類型  361

14.1.2 動態類型什么時候有用,為什么  362

14.1.3 c# 4如何提供動態類型  363

14.2 關於動態的快速指南  364

14.3 動態類型示例  366

14.3.1 com和office  367

14.3.2 動態語言  368

14.3.3 純托管代碼中的動態類型  372

14.4 幕后原理  377

14.4.1 dlr簡介  378

14.4.2 dlr核心概念  379

14.4.3 c#編譯器如何處理動態  382

14.4.4 更加智能的c#編譯器  385

14.4.5 動態代碼的約束  388

14.5 實現動態行為  390

14.5.1 使用expandoobject  391

14.5.2 使用dynamicobject  394

14.5.3  實現idynamicmetaobject-provider  400

14.6 小結  404

第五部分 c# 5:簡化的異步編程

第15章 使用async/await進行異步編程  406

15.1 異步函數簡介  407

15.1.1 初識異步類型  408

15.1.2 分解第一個示例  409

15.2 思考異步編程  410

15.2.1 異步執行的基礎  410

15.2.2 異步方法  412

15.3 語法和語義  413

15.3.1 聲明異步方法  413

15.3.2 異步方法的返回類型  414

15.3.3 可等待模式  415

15.3.4 await表達式的流  418

15.3.5 從異步方法返回  421

15.3.6 異常  422

15.4 異步匿名函數  429

15.5 實現細節:編譯器轉換  431

15.5.1 生成的代碼  432

15.5.2 骨架方法的結構  434

15.5.3 狀態機的結構  435

15.5.4 一個入口搞定一切  436

15.5.5 圍繞await表達式的控制  438

15.5.6 跟蹤棧  439

15.5.7 更多內容  440

15.6 高效地使用async/await  441

15.6.1 基於任務的異步模式  441

15.6.2 組合異步操作  444

15.6.3 對異步代碼編寫單元測試  447

15.6.4 可等待模式的歸來  450

15.6.5 在winrt中執行異步操作  451

15.7 小結  452

第16章 c# 5附加特性和結束語  453

16.1 foreach循環中捕獲變量的變化  453

16.2 調用者信息特性  454

16.2.1 基本行為  454

16.2.2 日志  456

16.2.3 實現inotifyproperty-changed  456

16.2.4 在非.net 4.5環境下使用調用者信息特性  457

16.3 結束語  458

附錄a linq標准查詢操作符  460

附錄b .net中的泛型集合  471

附錄c 版本總結  483

 

本圖書信息來源:互動出版

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM