當前位置:編程學習大全網 - 編程語言 - C#本質論的C#本質論(第3版)

C#本質論的C#本質論(第3版)

出版社:人民郵電出版社 出版日期:2010年9月 ISBN:978-7-115-23383-7 定 價:99.00元 《C#本質論(第3版)》是壹部好評如潮的語言參考書,作者用壹種非常合理的方式來組織《C#本質論(第3版)》的內容,由淺人深地介紹了C#語言的各個方面。全書***包括21章及6個附錄,每章開頭的“思維導圖”指明了本章要討論的主題,以及各個主題之間的層次關系。書中所包含的豐富的示例代碼和精要的語言比較,都有助於讀者理解C#語言。《C#本質論(第3版)》首先介紹了C#語言的基礎知識,隨後深人講解了泛型、叠代器、反射、線程、互操作性和語言集成查詢(LINQ)等高級主題,還涉及了動態編程、使用TPL進行多線程編程以及用LINQ進行並行查詢處理等C#4.0新增內容,此外還介紹了與這些內容相關的隱式類型變量、擴展方法、分部方法、Lambda語句和表達式、標準查詢操作符和查詢表達式以及並發集合等內容。

《C#本質論(第3版)》適合對C#感興趣的各層次讀者,無論對初學者還是C#專家,《C#本質論(第3版)》都是壹本很有價值的參考書。 第1章 C#概述 1

1.1 Hello, World 1

1.2 C#語法基礎 3

1.2.1 C#關鍵字 3

1.2.2 類型定義 5

1.2.3 Main 5

1.2.4 語句和語句分隔符 7

1.2.5 空白 7

1.3 使用變量 8

1.3.1 數據類型 9

1.3.2 變量的聲明 9

1.3.3 變量的賦值 10

1.3.4 變量的使用 11

1.4 控制臺輸入和輸出 11

1.4.1 從控制臺獲取輸入 11

1.4.2 將輸出寫入控制臺 13

1.5 註釋 14

1.6 托管執行和公***語言基礎結構 16

1.7 C#和.NET版本 18

1.8 CIL和ILDASM 18

.1.9 小結 21

第2章 數據類型 22

2.1 基本數值類型 22

2.1.1 整數類型 22

2.1.2 浮點類型 23

2.1.3 decimal類型 24

2.1.4 字面值 24

2.2 更多基本類型 28

2.2.1 布爾類型 28

2.2.2 字符類型 28

2.2.3 字符串 30

2.3 null和void 36

2.3.1 null 36

2.3.2 void 36

2.4 類型的分類 38

2.4.1 值類型 38

2.4.2 引用類型 39

2.5 可空修飾符 40

2.6 數據類型之間的轉換 41

2.6.1 顯式轉型 41

2.6.2 隱式轉型 43

2.6.3 不進行轉型的類型轉換 44

2.7 數組 45

2.7.1 數組的聲明 46

2.7.2 數組的實例化和賦值 46

2.7.3 數組的使用 50

2.7.4 字符串作為數組使用 54

2.7.5 常見錯誤 56

2.8 小結 57

第3章 運算符和控制流 58

3.1 運算符 58

3.1.1 壹元運算符正和負 59

3.1.2 二元算術運算符 59

3.1.3 圓括號運算符 65

3.1.4 賦值運算符 65

3.1.5 遞增和遞減運算符 66

3.1.6 常量表達式 68

3.2 流控制概述 69

3.2.1 if語句 71

3.2.2 嵌套if 71

3.3 代碼塊 73

3.4 作用域和聲明空間 75

3.5 布爾表達式 76

3.5.1 關系運算符和相等性運算符 77

3.5.2 邏輯布爾運算符 78

3.5.3 邏輯求反運算符 79

3.5.4 條件運算符 79

3.5.5 空接合運算符 80

3.6 按位運算符 81

3.6.1 移位運算符 82

3.6.2 按位運算符 82

3.6.3 按位賦值運算符 84

3.6.4 按位取反運算符 85

3.7 控制流語句 85

3.7.1 while和do/while循環 85

3.7.2 for循環 87

3.7.3 foreach循環 89

3.7.4 switch語句 92

3.8 跳轉語句 94

3.8.1 break語句 94

3.8.2 continue語句 96

3.8.3 goto語句 97

3.9 C#預處理器指令 99

3.9.1 排除和包含代碼 100

3.9.2 定義預處理器符號 100

3.9.3 生成錯誤和警告 101

3.9.4 關閉警告消息 101

3.9.5 nowarn:[warn list]選項 102

3.9.6 指定行號 102

3.9.7 可視編輯器提示 103

3.10 小結 104

第4章 方法和參數 106

4.1 方法的調用 107

4.1.1 命名空間 108

4.1.2 類型名稱 109

4.1.3 作用域 110

4.1.4 方法名稱 110

4.1.5 參數 110

4.1.6 方法返回值 110

4.1.7 語句與方法調用的比較 111

4.2 方法的聲明 111

4.2.1 參數聲明 113

4.2.2 方法返回值聲明 113

4.3 using指令 114

4.4 Main()的返回值和參數 117

4.5 參數 120

4.5.1 值參數 120

4.5.2 引用參數 121

4.5.3 輸出參數 122

4.5.4 參數數組 124

4.6 遞歸 126

4.7 方法重載 128

4.8 可選參數 131

4.9 用異常實現基本錯誤處理 134

4.9.1 捕捉錯誤 135

4.9.2 使用throw語句報告錯誤 141

4.10 小結 143

第5章 類 145

5.1 類的定義和實例化 148

5.2 實例字段 150

5.2.1 實例字段的聲明 150

5.2.2 實例字段的訪問 151

5.3 實例方法 152

5.4 使用this關鍵字 153

5.5 訪問修飾符 159

5.6 屬性 161

5.6.1 屬性的聲明 162

5.6.2 自動實現的屬性 164

5.6.3 命名規範 165

5.6.4 提供屬性驗證 166

5.6.5 只讀和只寫屬性 167

5.6.6 為取值方法和賦值方法指定訪問修飾符 168

5.6.7 屬性作為虛字段使用 170

5.6.8 屬性和方法調用不允許作為ref或out參數值使用 171

5.7 構造器 173

5.7.1 構造器的聲明 173

5.7.2 默認構造器 175

5.7.3 對象初始化器 175

5.7.4 構造器的重載 177

5.7.5 使用this調用另壹個構造器 178

5.8 靜態成員 181

5.8.1 靜態字段 182

5.8.2 靜態方法 184

5.8.3 靜態構造器 186

5.8.4 靜態屬性 187

5.8.5 靜態類 187

5.9 擴展方法 189

5.10 封裝數據 190

5.10.1 const 190

5.10.2 readonly 191

5.11 嵌套類 192

5.12 分部類 194

5.12.1 定義分部類 194

5.12.2 分部方法 195

5.13 小結 197

第6章 繼承 198

6.1 派生 198

6.1.1 基類型和派生類型之間的轉型 201

6.1.2 private訪問修飾符 202

6.1.3 protected訪問修飾符 203

6.1.4 擴展方法 205

6.1.5 單壹繼承 205

6.1.6 密封類 207

6.2 基類的重寫 207

6.2.1 virtual修飾符 208

6.2.2 new修飾符 211

6.2.3 sealed修飾符 215

6.2.4 base成員 215

6.2.5 構造器 216

6.3 抽象類 217

6.4 所有類都從System.Object派生 221

6.5 使用is運算符驗證基礎類型 222

6.6 使用as運算符進行轉換 223

6.7 小結 224

第7章 接口 226

7.1 接口概述 226

7.2 通過接口來實現多態性 227

7.3 接口實現 232

7.3.1 顯式成員實現 234

7.3.2 隱式成員實現 235

7.3.3 顯式接口實現與隱式接口實現的比較 235

7.4 “實現類”與其接口之間的轉型 236

7.5 接口繼承 237

7.6 多接口繼承 239

7.7 接口上的擴展方法 239

7.8 通過接口來實現多重繼承 241

7.9 版本控制 243

7.10 接口與類的比較 245

7.11 小結 245

第8章 值類型 246

8.1 結構 246

8.1.1 struct的初始化 249

8.1.2 default運算符的使用 251

8.1.3 值類型的繼承和接口 251

8.2 裝箱 251

8.3 枚舉 257

8.3.1 枚舉之間的類型兼容性 259

8.3.2 枚舉和字符串之間的轉換 260

8.3.3 枚舉作為標誌使用 261

8.4 小結 265

第9章 合式類型 266

9.1 重寫object的成員 266

9.1.1 重寫ToString() 266

9.1.2 重寫GetHashCode() 267

9.1.3 重寫Equals() 269

9.1.4 相等性實現的指導原則 275

9.2 運算符重載 275

9.2.1 比較運算符 275

9.2.2 二元運算符 276

9.2.3 賦值運算符與二元運算符的結合 278

9.2.4 條件邏輯運算符 279

9.2.5 壹元運算符 279

9.2.6 轉換運算符 280

9.2.7 轉換運算符的指導原則 282

9.3 引用其他程序集 282

9.3.1 更改程序集目標 282

9.3.2 引用程序集 283

9.3.3 類型封裝 283

9.4 定義命名空間 285

9.5 XML註釋 287

9.5.1 將XML註釋與代碼構造關聯到壹起 288

9.5.2 生成XML文檔文件 290

9.6 垃圾回收 291

9.7 資源清理 293

9.7.1 終結器 293

9.7.2 使用using語句進行確定性終結 295

9.7.3 垃圾回收和終結 297

9.7.4 資源利用和終結的指導原則 299

9.8 延遲初始化 299

9.9 小結 301

第10章 異常處理 302

10.1 多異常類型 302

10.2 捕捉異常 303

10.3 常規catch塊 305

10.4 異常處理的指導原則 306

10.5 定義自定義異常 308

10.6 小結 312

第11章 泛型 313

11.1 如果C#沒有泛型 313

11.2 泛型類型概述 318

11.2.1 泛型類的使用 318

11.2.2 簡單泛型類的定義 320

11.2.3 泛型的優點 321

11.2.4 類型參數命名的指導原則 321

11.2.5 泛型接口和struct 321

11.2.6 構造器和終結器的定義 323

11.2.7 默認值的指定 324

11.2.8 多個類型參數 325

11.2.9 元數 326

11.2.10 嵌套泛型類型 327

11.3 約束 328

11.3.1 接口約束 331

11.3.2 基類約束 332

11.3.3 struct/class約束 332

11.3.4 多個約束 333

11.3.5 構造器約束 334

11.3.6 約束繼承 334

11.4 泛型方法 339

11.4.1 類型推斷 340

11.4.2 約束的指定 341

11.5 協變性和逆變性 342

11.5.1 在C# 4.0中使用out類型參數修飾符允許協變性 343

11.5.2 在C# 4.0中使用in類型參數修飾符允許逆變性 345

11.5.3 數組的協變性和逆變性 347

11.6 泛型的內部機制 347

11.6.1 基於值類型的泛型的實例化 348

11.6.2 基於引用類型的泛型實例化 349

11.7 小結 350

第12章 委托和Lambda表達式 351

12.1 委托概述 351

12.1.1 背景 351

12.1.2 委托數據類型 353

12.1.3 委托的內部機制 355

12.1.4 委托類型的定義 355

12.1.5 委托的實例化 356

12.2 匿名方法 361

12.3 系統定義的委托:Func[] 363

12.4 Lambda表達式 365

12.4.1 語句Lambda 365

12.4.2 表達式Lambda 368

12.4.3 外部變量 371

12.4.4 表達式樹 374

12.5 小結 379

第13章 事件 380

13.1 使用多播委托來編碼Observer模式 380

13.1.1 定義訂閱者方法 381

13.1.2 定義發布者 382

13.1.3 連接發布者和訂閱者 383

13.1.4 調用委托 384

13.1.5 檢查空值 385

13.1.6 委托運算符 386

13.1.7 順序調用 387

13.1.8 錯誤處理 390

13.1.9 方法返回值和傳引用 392

13.2 事件 393

13.2.1 事件的作用 393

13.2.2 事件的聲明 395

13.2.3 編碼規範 396

13.2.4 泛型和委托 397

13.2.5 自定義事件的實現 400

13.3 小結 401

第14章 支持標準查詢運算符的集合接口 402

14.1 匿名類型和隱式類型的局部變量聲明 403

14.1.1 匿名類型 403

14.1.2 隱式類型的局部變量(var) 404

14.1.3 匿名類型和隱式局部變量的更多註意事項 405

14.2 集合初始化器 408

14.3 是什麽使類成為壹個集合:IEnumerable[T] 410

14.3.1 foreach和數組 410

14.3.2 foreach和IEnumerable[T] 411

14.3.3 foreach循環內不要修改集合 415

14.4 標準查詢運算符 415

14.4.1 使用Where()來篩選 418

14.4.2 使用Select()來投射 420

14.4.3 用Count()對元素進行計數 422

14.4.4 推遲執行 423

14.4.5 使用OrderBy()和ThenBy()來排序 427

14.4.6 使用Join()來執行內部聯接 432

14.4.7 使用GroupBy分組結果 435

14.4.8 使用GroupJoin()實現壹對多關系 436

14.4.9 調用SelectMany() 439

14.4.10 更多標準查詢運算符 441

14.5 小結 444

第15章 使用查詢表達式的LINQ 445

15.1 查詢表達式概述 445

15.1.1 投射 447

15.1.2 篩選 453

15.1.3 排序 454

15.1.4 let子句 454

15.1.5 分組 456

15.1.6 使用into進行查詢延續 459

15.2 查詢表達式作為方法調用 461

15.3 小結 462

第16章 構建自定義集合 463

16.1 更多集合接口 464

16.1.1 IList[T]與IDictionary [TKey,TValue] 465

16.1.2 IComparable[T] 465

16.1.3 ICollection[T] 467

16.2 主要集合類 467

16.2.1 列表集合:List[T] 467

16.2.2 字典集合:Dictionary[TKey,TValue] 471

16.2.3 已排序集合:SortedDicti-onary[TKey,TValue]和SortedList[T] 475

16.2.4 棧集合:Stack[T] 477

16.2.5 隊列集合:Queue[T] 477

16.2.6 鏈表:LinkedList[T] 478

16.3 提供壹個索引運算符 479

16.4 返回Null或者空集合 482

16.5 叠代器 482

16.5.1 叠代器的定義 483

16.5.2 叠代器語法 483

16.5.3 從叠代器生成值 485

16.5.4 叠代器和狀態 486

16.5.5 更多的叠代器例子 488

16.5.6 將yield return語句放到循環中 489

16.5.7 取消更多的叠代:yield break 491

16.5.8 在單個類中創建多個叠代器 493

16.5.9 yield語句的特征 494

16.6 小結 495

第17章 反射、特性和動態編程 496

17.1 反射 496

17.1.1 使用System.Type訪問元數據 497

17.1.2 成員調用 499

17.1.3 泛型類型上的反射 503

17.2 特性 506

17.2.1 自定義特性 509

17.2.2 查找特性 509

17.2.3 使用構造器來初始化特性 510

17.2.4 System.AttributeUsage-Attribute 515

17.2.5 具名參數 516

17.3 使用動態對象進行編程 527

17.3.1 使用dynamic調用反射 527

17.3.2 dynamic的原則和行為 528

17.3.3 為什麽需要動態綁定 530

17.3.4 靜態編譯與動態編程的比較 531

17.3.5 實現自定義動態對象 532

17.4 小結 534

第18章 多線程處理 536

18.1 獨立線程的運行和控制 539

18.1.1 ContinueWith() 543

18.1.2 Task上的未處理異常 546

18.1.3 取消任務 549

18.1.4 長時間運行的任務 552

18.1.5 釋放壹個任務 552

18.2 並行叠代 553

18.2.1 使用System.AggregateEx-ception進行並行異常處理 556

18.2.2 取消並行循環 557

18.3 並行執行LINQ查詢 560

18.4 .NET Framework 4之前的多線程處理 564

18.4.1 使用System.Threading.Thread進行異步操作 564

18.4.2 線程管理 566

18.4.3 線程池處理 567

18.5 AppPomain的未處理異常 568

18.6 小結 570

第19章 同步和更多多線程處理模式 571

19.1 同步 572

19.1.1 使用Monitor來同步 574

19.1.2 使用lock關鍵字 576

19.1.3 lock對象的選擇 578

19.1.4 為什麽要避免鎖定this、typeof(type)和string 578

19.1.5 將字段聲明為volatile 579

19.1.6 使用System.Threading.Interlocked類 579

19.1.7 多個線程時的事件通知 581

19.1.8 同步設計最佳實踐 582

19.1.9 更多的同步類型 583

19.1.10 線程本地存儲 588

19.2 計時器 591

19.3 異步編程模型 596

19.3.1 調用APM 596

19.3.2 使用TPC調用APM 602

19.4 異步委托調用 608

19.5 基於事件的異步模式(EAP) 610

19.6 Background Worker模式 613

19.6.1 模式的建立 616

19.6.2 異常處理 616

19.7 Windows UI編程 617

19.7.1 Windows窗體 617

19.7.2 Windows Presentation Foundation(WPF) 619

19.8 小結 621

第20章 平臺互操作性和不安全的代碼 623

20.1 平臺調用 624

20.1.1 外部函數的聲明 624

20.1.2 參數的數據類型 624

20.1.3 使用ref而不是指針 626

20.1.4 為順序布局使用StructLayoutAttribute 626

20.1.5 錯誤處理 627

20.1.6 使用SafeHandle 629

20.1.7 外部函數的調用 632

20.1.8 用包裝簡化API調用 634

20.1.9 函數指針映射到委托 635

20.1.10 指導原則 635

20.2 指針和地址 635

20.2.1 不安全的代碼 635

20.2.2 指針的聲明 637

20.2.3 指針的賦值 638

20.2.4 指針的解引用 640

20.2.5 訪問被引用物類型的成員 642

20.3 小結 642

第21章 CLI 645

21.1 CLI的定義 645

21.2 CLI實現 646

21.3 C#編譯成機器碼 647

21.4 運行時 649

21.4.1 垃圾回收 649

21.4.2 .NET的垃圾回收 650

21.4.3 類型安全 650

21.4.4 代碼訪問安全性 651

21.4.5 平臺可移植性 651

21.4.6 性能 651

21.5 應用程序域 652

21.6 程序集、清單和模塊 652

21.7 公***中間語言 654

21.8 公***類型系統 655

21.9 公***語言規範 655

21.10 基類庫 655

21.11 元數據 656

21.12 小結 656

附錄A 下載和安裝C#編譯器與CLI平臺 658

附錄B 完整源代碼清單 660

附錄C 來自System.Collections.Concurrent的並發類 686

附錄D C# 2.0主題 689

附錄E C# 3.0主題 691

附錄F C# 4.0主題 693

  • 上一篇:杭州排名前三十的小學
  • 下一篇:青少年科普的重要性
  • copyright 2024編程學習大全網