 |
-- 會員 / 註冊 --
|
|
|
|
C# 6.0本質論 ( 簡體 字) |
作者:[美] 馬克·米凱利斯 ( Mark Michaelis ) 埃里克·利珀特 ( Eric Lippert ) | 類別:1. -> 程式設計 -> .NET -> C# |
譯者: |
出版社:人民郵電出版社 | 3dWoo書號: 46030 詢問書籍請說出此書號!【缺書】 NT售價: 540 元 |
出版日:1/1/2017 |
頁數:620 |
光碟數:0 |
|
站長推薦:  |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787115441317 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: |
內容簡介: 這是 C#領域中一部廣受好評的名作,作者用一種易于理解的方式詳細介紹了 C#語言的各個方面。全書共有21章和4個附錄(其中有2個附錄從網上下載),介紹了 C#語言的數據類型、操作符、方法、類、接口、異常處理等基本概念,深入討論了泛型、迭代器、反射、線程和互操作性等高級主題,還介紹了LINQ技術,以及與其相關的擴展方法、分部方法、Lambda表達式、標準查詢操作符和查詢表達式等內容。每章開頭的“思維導圖”指明本章要討論的主題,以及各個主題之間的層次關系。為了幫助讀者理解各種 C#構造,書中用豐富的示例展示每一種特性,而且為每個概念都提供了相應的規范和實踐,以確保代碼能順利編譯、避免留下隱患,并獲得相應的可維護性。
|
目錄:第1章 C#概述 1 1.1 Hello, World 1 1.2 C#語法基礎 3 1.2.1 C#關鍵字 3 1.2.2 標識符 4 1.2.3 類型定義 5 1.2.4 Main 6 1.2.5 語句和語句分隔符 7 1.2.6 空白 8 1.2.7 使用變量 8 1.2.8 數據類型 9 1.2.9 變量的聲明 9 1.2.10 變量的賦值 10 1.2.11 變量的使用 11 1.3 控制臺輸入和輸出 11 1.3.1 從控制臺獲取輸入 11 1.3.2 將輸出寫入控制臺 12 1.3.3 注釋 14 1.3.4 應用程序接口 16 1.3.5 托管執行和公共語言基礎結構 16 1.3.6 C#和.NET版本 18 1.3.7 CIL和ILDASM 18 1.4 小結 21 第2章 數據類型 22 2.1 基本數值類型 22 2.1.1 整數類型 23 2.1.2 浮點類型 24 2.1.3 十進制浮點類型 24 2.1.4 字面量 25 2.2 更多基本類型 28 2.2.1 布爾類型 28 2.2.2 字符類型 28 2.2.3 字符串 30 2.3 null和void 36 2.3.1 null 37 2.3.2 void 37 2.4 類型的分類 39 2.4.1 值類型 39 2.4.2 引用類型 40 2.5 可空修飾符 41 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 數組的實例化和賦值 47 2.7.3 數組的使用 50 2.7.4 字符串作為數組使用 54 2.7.5 常見數組錯誤 55 2.8 小結 56 第3章 操作符和控制流 57 3.1 操作符 57 3.1.1 一元操作符正和負 58 3.1.2 二元算術操作符 58 3.1.3 復合賦值操作符 64 3.1.4 遞增和遞減操作符 65 3.1.5 常量表達式和常量符號 68 3.2 控制流程概述 68 3.2.1 if語句 70 3.2.2 嵌套if 71 3.3 代碼塊 72 3.4 代碼塊、作用域和聲明空間 74 3.5 布爾表達式 75 3.5.1 關系操作符和相等性操作符 76 3.5.2 邏輯布爾操作符 77 3.5.3 邏輯求反操作符 78 3.5.4 條件操作符 78 3.5.5 空接合操作符 79 3.5.6 null條件操作符 80 3.6 按位操作符 82 3.6.1 移位操作符 83 3.6.2 按位操作符 83 3.6.3 按位賦值操作符 85 3.6.4 按位取反操作符 86 3.7 控制流語句(續) 86 3.7.1 while和do/while循環 86 3.7.2 for循環 88 3.7.3 foreach循環 90 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#預處理指令 98 3.9.1 排除和包含代碼 99 3.9.2 定義預處理符號 100 3.9.3 生成錯誤和警告 100 3.9.4 關閉警告消息 101 3.9.5 nowarn:warn list選項 101 3.9.6 指定行號 101 3.9.7 可視編輯器提示 102 3.10 小結 103 第4章 方法和參數 105 4.1 方法的調用 106 4.1.1 命名空間 107 4.1.2 類型名稱 108 4.1.3 作用域 109 4.1.4 方法名稱 109 4.1.5 形參和實參 109 4.1.6 方法返回值 109 4.1.7 語句與方法調用的比較 110 4.2 方法的聲明 110 4.2.1 形式參數聲明 112 4.2.2 方法返回類型聲明 112 4.2.3 表達式主體方法 113 4.3 using指令 114 4.3.1 using static指令 115 4.3.2 使用別名 116 4.4 Main()的返回值和參數 117 4.5 方法的參數 119 4.5.1 值參數 119 4.5.2 引用參數(ref) 120 4.5.3 輸出參數(out) 121 4.5.4 參數數組 123 4.6 遞歸 125 4.7 方法重載 127 4.8 可選參數 129 4.9 用異常實現基本錯誤處理 132 4.9.1 捕獲錯誤 133 4.9.2 使用throw語句報告錯誤 139 4.10 小結 142 第5章 類 143 5.1 類的定義和實例化 145 5.2 實例字段 148 5.2.1 實例字段的聲明 148 5.2.2 實例字段的訪問 148 5.3 實例方法 149 5.4 使用this關鍵字 150 5.5 訪問修飾符 155 5.6 屬性 157 5.6.1 屬性的聲明 158 5.6.2 自動實現的屬性 159 5.6.3 屬性和字段的設計編碼規范 161 5.6.4 提供屬性驗證 162 5.6.5 只讀屬性和只寫屬性 163 5.6.6 屬性作為虛字段使用 165 5.6.7 為取值方法和賦值方法指定訪問修飾符 166 5.6.8 屬性和方法調用不允許作為ref或out參數值使用 168 5.7 構造器 169 5.7.1 構造器的聲明 169 5.7.2 默認構造器 170 5.7.3 對象初始化器 171 5.7.4 構造器的重載 172 5.7.5 構造器鏈:使用this調用另一個構造器 173 5.8 靜態成員 177 5.8.1 靜態字段 177 5.8.2 靜態方法 179 5.8.3 靜態構造器 180 5.8.4 靜態屬性 181 5.8.5 靜態類 182 5.9 擴展方法 184 5.10 封裝數據 185 5.10.1 const 185 5.10.2 readonly 186 5.11 嵌套類 187 5.12 分部類 189 5.12.1 定義分部類 189 5.12.2 分部方法 190 5.13 小結 192 第6章 繼承 193 6.1 派生 194 6.1.1 基類型和派生類型之間的轉型 196 6.1.2 private訪問修飾符 197 6.1.3 protected訪問修飾符 198 6.1.4 擴展方法 199 6.1.5 單繼承 199 6.1.6 密封類 201 6.2 基類的重寫 201 6.2.1 virtual修飾符 202 6.2.2 new修飾符 205 6.2.3 sealed修飾符 208 6.2.4 base成員 208 6.2.5 構造器 209 6.3 抽象類 210 6.4 所有類都從System.Object派生 214 6.5 使用is操作符驗證基礎類型 215 6.6 使用as操作符進行轉換 215 6.7 小結 217 第7章 接口 218 7.1 接口概述 218 7.2 通過接口實現多態性 220 7.3 接口實現 223 7.3.1 顯式成員實現 225 7.3.2 隱式成員實現 226 7.3.3 顯式接口實現與隱式接口實現的比較 226 7.4 在實現類和接口之間轉換 227 7.5 接口繼承 227 7.6 多接口繼承 229 7.7 接口上的擴展方法 230 7.8 通過接口實現多繼承 231 7.9 版本控制 233 7.10 接口與類的比較 234 7.11 接口與特性的比較 235 7.12 小結 235 第8章 值類型 236 8.1 結構 236 8.1.1 結構的初始化 240 8.1.2 default操作符的使用 242 8.1.3 值類型的繼承和接口 242 8.2 裝箱 243 8.3 枚舉 248 8.3.1 枚舉之間的類型兼容性 251 8.3.2 枚舉和字符串之間的轉換 252 8.3.3 枚舉作為標志使用 253 8.4 小結 256 第9章 良構類型 258 9.1 重寫object的成員 258 9.1.1 重寫ToString() 258 9.1.2 重寫GetHashCode() 259 9.1.3 重寫Equals() 261 9.2 操作符重載 267 9.2.1 比較操作符 267 9.2.2 二元操作符 268 9.2.3 賦值與二元操作符的結合 269 9.2.4 條件邏輯操作符 270 9.2.5 一元操作符 270 9.2.6 轉換操作符 271 9.2.7 轉換操作符的規范 272 9.3 引用其他程序集 273 9.3.1 更改程序集目標 273 9.3.2 引用程序集 273 9.4 定義命名空間 276 9.5 XML注釋 279 9.5.1 將XML注釋與代碼構造關聯到一起 279 9.5.2 生成XML文檔文件 281 9.6 垃圾回收 282 9.7 資源清理 284 9.7.1 終結器 284 9.7.2 使用using語句進行確定性終結 285 9.7.3 垃圾回收、終結和IDisposable 288 9.8 延遲初始化 290 9.9 小結 291 第10章 異常處理 292 10.1 多異常類型 292 10.2 捕獲異常 294 10.3 常規catch塊 297 10.4 異常處理的規范 299 10.5 定義自定義異常 301 10.6 封裝異常并重新引發 303 10.7 小結 306 第11章 泛型 307 11.1 如果C# 沒有泛型 307 11.2 泛型類型概述 311 11.2.1 泛型類的使用 312 11.2.2 簡單泛型類的定義 313 11.2.3 泛型的優點 314 11.2.4 類型參數命名規范 314 11.2.5 泛型接口和結構 315 11.2.6 構造器和終結器的定義 316 11.2.7 默認值的指定 317 11.2.8 多個類型參數 317 11.2.9 元數 318 11.2.10 嵌套泛型類型 319 11.3 約束 320 11.3.1 接口約束 321 11.3.2 類類型約束 322 11.3.3 struct/class約束 323 11.3.4 多個約束 323 11.3.5 構造器約束 324 11.3.6 約束繼承 325 11.4 泛型方法 329 11.4.1 泛型方法類型推斷 329 11.4.2 約束的指定 330 11.5 協變性和逆變性 332 11.5.1 在C# 4.0中使用out類型參數修飾符允許協變性 333 11.5.2 在C# 4.0中使用in類型參數修飾符允許逆變性 334 11.5.3 數組對不安全協變性的支持 336 11.6 泛型的內部機制 336 11.7 小結 339 第12章 委托和Lambda表達式 340 12.1 委托概述 341 12.1.1 背景 341 12.1.2 委托數據類型 342 12.1.3 委托類型的聲明 343 12.1.4 委托的實例化 344 12.2 Lambda表達式 348 12.2.1 語句Lambda 348 12.2.2 表達式Lambda 350 12.3 匿名方法 351 12.4 通用的委托:System.Func和System.Action 353 12.4.1 委托沒有結構相等性 354 12.4.2 外部變量 356 12.4.3 表達式樹 359 12.5 小結 364 第13章 事件 366 13.1 使用多播委托來編碼Observer模式 367 13.1.1 定義訂閱者方法 367 13.1.2 定義發布者 368 13.1.3 連接發布者和訂閱者 368 13.1.4 調用委托 369 13.1.5 檢查null值 369 13.1.6 委托操作符 371 13.1.7 順序調用 373 13.1.8 錯誤處理 375 13.1.9 方法返回值和傳引用 377 13.2 事件 378 13.2.1 事件的作用 378 13.2.2 事件的聲明 379 13.2.3 編碼規范 380 13.2.4 泛型和委托 382 13.2.5 自定義事件的實現 384 13.3 小結 385 第14章 支持標準查詢操作符的集合接口 386 14.1 匿名類型和隱式類型的局部變量聲明 387 14.1.1 匿名類型 387 14.1.2 隱式類型的局部變量 388 14.1.3 匿名類型和隱式局部變量的更多注意事項 389 14.2 集合初始化器 391 14.3 是什么使類成為集合:IEnumerableT 394 14.3.1 foreach和數組 394 14.3.2 foreach和IEnumerableT 394 14.3.3 foreach循環內不要修改集合 398 14.4 標準查詢操作符 398 14.4.1 使用Where()來篩選 401 14.4.2 使用Select()來投射 402 14.4.3 使用Count()對元素進行計數 404 14.4.4 推遲執行 405 14.4.5 使用OrderBy()和ThenBy()來排序 408 14.4.6 使用Join()來執行 內部聯接 413 14.4.7 使用GroupBy分組結果 415 14.4.8 使用GroupJoin()實現一對多關系 416 14.4.9 調用SelectMany() 419 14.4.10 更多標準查詢操作符 420 14.5 小結 423 第15章 使用查詢表達式的LINQ 424 15.1 查詢表達式概述 425 15.1.1 投射 426 15.1.2 篩選 431 15.1.3 排序 432 15.1.4 let子句 433 15.1.5 分組 434 15.1.6 使用into進行查詢延續 436 15.1.7 用多個from子句“平整”序列的序列 437 15.2 查詢表達式作為方法調用 438 15.3 小結 439 第16章 構建自定義集合 440 16.1 更多集合接口 441 16.1.1 IListT與IDictionary TKey, TValue 441 16.1.2 ICollectionT 442 16.2 主要集合類 442 16.2.1 列表集合:ListT 442 16.2.2 全序 445 16.2.3 搜索ListT 446 16.2.4 字典集合:DictionaryTKey, TValue 447 16.2.5 已排序集合:SortedDictionaryTKey, TValue和SortedListT 452 16.2.6 棧集合:StackT 452 16.2.7 隊列集合:QueueT 454 16.2.8 鏈表:LinkedListT 454 16.3 提供索引器 454 16.4 返回null或者空集合 457 16.5 迭代器 457 16.5.1 迭代器的定義 458 16.5.2 迭代器語法 458 16.5.3 從迭代器生成值 459 16.5.4 迭代器和狀態 460 16.5.5 更多的迭代器例子 461 16.5.6 將yield return語句放到循環中 463 16.5.7 取消更多的迭代:yield break 465 16.5.8 在單個類中創建多個迭代器 467 16.5.9 yield語句的要求 467 16.6 小結 468 第17章 反射、特性和動態編程 469 17.1 反射 469 17.1.1 使用System.Type訪問元數據 470 17.1.2 成員調用 471 17.1.3 泛型類型上的反射 476 17.2 nameof操作符 477 17.3 特性 478 17.3.1 自定義特性 481 17.3.2 查找特性 482 17.3.3 使用構造器來初始化特性 482 17.3.4 System.Attribute UsageAttribute 486 17.3.5 命名參數 487 17.4 使用動態對象進行編程 495 17.4.1 使用dynamic調用反射 496 17.4.2 dynamic的原則和行為 497 17.4.3 為什么需要動態綁定 498 17.4.4 靜態編譯與動態編程的比較 499 17.4.5 實現自定義動態對象 500 17.5 小結 502 第18章 多線程處理 504 18.1 多線程基礎 506 18.2 使用System.Threading 509 18.2.1 使用System.Threading.Thread進行異步操作 509 18.2.2 線程管理 511 18.2.3 在生產代碼中不要讓線程進入睡眠 511 18.2.4 在生產代碼中不要中止線程 512 18.2.5 線程池處理 513 18.3 異步任務 514 18.3.1 從Thread到Task 515 18.3.2 理解異步任務 515 18.3.3 任務延續 518 18.3.4 用AggregateException處 理Task上的未處理異常 522 18.4 取消任務 527 18.4.1 Task.Run()是Task.Factory.StartNew()的簡化形式 529 18.4.2 長時間運行的任務 530 18.4.3 對任務進行資源清理 530 18.5 基于任務的異步模式 531 18.5.1 以同步方式調用高延遲操作 531 18.5.2 使用TPL異步調用高 延遲操作 532 18.5.3 通過async和await實現基于任務的異步模式 535 18.5.4 異步Lambda 538 18.5.5 任務調度器和同步上下文 543 18.5.6 async/await和Windows UI 545 18.5.7 await操作符 546 18.6 并行迭代 547 18.7 并行執行LINQ查詢 554 18.8 小結 557 第19章 線程同步 559 19.1 為什么要同步 560 19.1.1 使用Monitor來同步 563 19.1.2 使用lock關鍵字 565 19.1.3 lock對象的選擇 566 19.1.4 為什么要避免鎖定this、typeof(type)和string 566 19.1.5 將字段聲明為volatile 568 19.1.6 使用System.Threading.Interlocked類 568 19.1.7 多個線程時的事件通知 569 19.1.8 同步設計最佳實踐 570 19.1.9 更多的同步類型 571 19.1.10 線程本地存儲 577 19.2 計時器 579 19.3 小結 581 第20章 平臺互操作性和不安全的代碼 582 20.1 平臺調用 583 20.1.1 外部函數的聲明 583 20.1.2 參數的數據類型 584 20.1.3 使用ref而不是指針 585 20.1.4 為順序布局使用StructLayoutAttribute 585 20.1.5 錯誤處理 586 20.1.6 使用SafeHandle 588 20.1.7 外部函數的調用 589 20.1.8 用包裝器簡化API調用 591 20.1.9 函數指針映射到委托 591 20.1.10 編碼規范 592 20.2 指針和地址 592 20.2.1 不安全的代碼 592 20.2.2 指針的聲明 593 20.2.3 指針的賦值 594 20.2.4 指針的解引用 596 20.2.5 訪問被引用物類型的成員 598 20.2.6 通過委托執行不安全的代碼 598 20.3 在C#中使用WinRT庫 599 20.3.1 具有自定義Add/Remove處理程序的WinRT事件 600 20.3.2 自動變換的接口 601 20.3.3 基于任務的異步 601 20.4 小結 601 第21章 CLI 602 21.1 CLI的定義 602 21.2 CLI實現 603 21.3 C#編譯成機器碼 604 21.4 運行時 605 21.4.1 垃圾回收 606 21.4.2 .NET的垃圾回收 606 21.4.3 類型安全 607 21.4.4 代碼訪問安全性 607 21.4.5 平臺可移植性 607 21.4.6 性能 608 21.5 應用程序域 608 21.6 程序集、清單和模塊 609 21.7 公共中間語言 610 21.8 公共類型系統 611 21.9 公共語言規范 611 21.10 基類庫 612 21.11 元數據 612 21.12 小結 612 附錄A 下載和安裝C#編譯器與CLI平臺 614 附錄B 井字棋源代碼清單 617 附錄C 使用TPL和C# 6.0之前的多線程處理模式(網上下載) 附錄D C# 6.0的async/await模式之前的計時器(網上下載)
|
序: |
|