 |
-- 會員 / 註冊 --
|
|
|
|
C#本質論(第2版) ( 簡體 字) |
作者:[美] Mark Michaelis | 類別:1. -> 程式設計 -> .NET -> C# |
譯者: |
出版社:人民郵電出版社 | 3dWoo書號: 24019 詢問書籍請說出此書號!【缺書】 【不接受訂購】 |
出版日:11/1/2009 |
頁數:610 |
光碟數: |
|
站長推薦:  |
印刷: | 語系: ( 簡體 版 ) |
|
【不接受訂購】 | ISBN:9787115213877 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: |
內容簡介:本書是一部廣受好評的名作,作者用一種易于理解的方式詳細介紹了C#語言的各個方面。全書共有21章以及3個附錄,每章開頭的“思維導圖”指明本章要討論的主題,以及各個主題之間的層次關系。書中所包含的豐富的示例代碼和精要的語言比較,都對讀者理解C#語言有所裨益。本書介紹了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 Main 5 1.2.4 語句和語句分隔符 6 1.2.5 空白 7 1.3 使用變量 8 1.3.1 數據類型 8 1.3.2 變量的聲明 9 1.3.3 變量的賦值 9 1.3.4 變量的使用 10 1.4 控制臺輸入和輸出 11 1.4.1 從控制臺獲取輸入 11 1.4.2 將輸出寫入控制臺 12 1.5 注釋 14 1.6 托管執行和公共語言基礎結構 15 1.7 C#和.NET版本 17 1.8 CIL和ILDASM 18 1.9 小結 20
第2章 數據類型 21 2.1 基本數值類型 21 2.1.1 整數類型 21 2.1.2 浮點類型(float,clouble) 22 2.1.3 decimal類型 23 2.1.4 字面值 23 2.2 更多基本類型 27 2.2.1 布爾類型(bool) 27 2.2.2 字符類型(char) 27 2.2.3 字符串 29 2.3 null和void 34 2.3.1 null 35 2.3.2 void 35 2.4 類型的分類 37 2.4.1 值類型 37 2.4.2 引用類型 38 2.5 可空修飾符 39 2.6 數據類型之間的轉換 39 2.6.1 顯式轉型 40 2.6.2 隱式轉型 42 2.6.3 不進行轉型的類型轉換 43 2.7 數組 44 2.7.1 數組的聲明 44 2.7.2 數組的實例化和賦值 45 2.7.3 數組的使用 48 2.7.4 字符串作為數組使用 53 2.7.5 常見錯誤 55 2.8 小結 55
第3章 運算符和控制流 57 3.1 運算符 57 3.1.1 一元運算符正和負 58 3.1.2 二元算術運算符 58 3.1.3 圓括號運算符 64 3.1.4 賦值運算符 64 3.1.5 遞增和遞減運算符 65 3.1.6 常量表達式 68 3.2 流控制概述 68 3.2.1 if語句 70 3.2.2 嵌套if 70 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.6 按位運算符 79 3.6.1 移位運算符 80 3.6.2 按位運算符 80 3.6.3 按位賦值運算符 82 3.6.4 按位取反運算符 83 3.7 控制流語句 83 3.7.1 while和do/while循環 83 3.7.2 for循環 85 3.7.3 foreach循環 87 3.7.4 switch語句 89 3.8 跳轉語句 91 3.8.1 break語句 91 3.8.2 continue語句 94 3.8.3 goto語句 95 3.9 C#預處理器指令 96 3.9.1 排除和包含代碼 97 3.9.2 定義預處理器符號 98 3.9.3 生成錯誤和警告 98 3.9.4 關閉警告消息 99 3.9.5 nowarn:warn list選項 99 3.9.6 指定行號 100 3.9.7 可視編輯器提示 100 3.10 小結 101
第4章 方法和參數 103 4.1 方法的調用 104 4.1.1 命名空間 105 4.1.2 類型名稱 106 4.1.3 作用域 106 4.1.4 方法名稱 107 4.1.5 參數 107 4.1.6 方法返回值 107 4.1.7 語句與方法調用的比較 108 4.2 方法的聲明 108 4.2.1 參數聲明 110 4.2.2 方法返回值聲明 110 4.3 using指令 111 4.4 Main()的返回值和參數 114 4.5 參數 116 4.5.1 值參數 117 4.5.2 引用參數(ref) 118 4.5.3 輸出參數(out) 119 4.5.4 參數數組(params) 120 4.6 遞歸 122 4.7 方法重載 124 4.8 用異常實現基本錯誤處理 127 4.8.1 捕捉錯誤 128 4.8.2 使用throw語句報告錯誤 134 4.9 小結 136
第5章 類 137 5.1 類的定義和實例化 140 5.2 實例字段 142 5.2.1 實例字段的聲明 142 5.2.2 實例字段的訪問 143 5.3 實例方法 144 5.4 使用this關鍵字 145 5.5 訪問修飾符 151 5.6 屬性 152 5.6.1 屬性的聲明 154 5.6.2 自動實現的屬性 155 5.6.3 命名規范 157 5.6.4 提供屬性驗證 157 5.6.5 只讀和只寫屬性 159 5.6.6 為getter和setter指定訪問修飾符 160 5.6.7 屬性作為虛字段使用 161 5.6.8 屬性和方法調用不允許作為ref或out參數值使用 163 5.7 構造器 164 5.7.1 構造器的聲明 164 5.7.2 默認構造器 165 5.7.3 對象初始化器 166 5.7.4 構造器的重載 167 5.7.5 使用this調用另一個構造器 168 5.8 靜態 172 5.8.1 靜態字段 172 5.8.2 靜態方法 175 5.8.3 靜態構造器 176 5.8.4 靜態屬性 177 5.8.5 靜態類 178 5.9 擴展方法 180 5.10 封裝數據 181 5.10.1 const 181 5.10.2 readonly 181 5.11 嵌套類 182 5.12 分部類 184 5.12.1 定義分部類 184 5.12.2 分部方法 185 5.13 小結 188
第6章 繼承 189 6.1 派生 189 6.1.1 基類型和派生類型之間的轉型 192 6.1.2 private訪問修飾符 193 6.1.3 protected訪問修飾符 194 6.1.4 擴展方法 195 6.1.5 單一繼承 195 6.1.6 密封類 197 6.2 基類的重寫 198 6.2.1 virtual修飾符 198 6.2.2 new修飾符 202 6.2.3 sealed修飾符 205 6.2.4 base成員 206 6.2.5 構造器 206 6.3 抽象類 207 6.4 一切最終都從System.Object派生 212 6.5 使用is運算符驗證基礎類型 213 6.6 使用as運算符進行轉換 213 6.7 小結 215
第7章 接口 216 7.1 接口概述 216 7.2 通過接口來實現多態性 217 7.3 接口實現 222 7.3.1 顯式成員實現 223 7.3.2 隱式成員實現 225 7.3.3 顯式接口實現與隱式接口實現的比較 225 7.4 “實現類”與其接口之間的轉型 226 7.5 接口繼承 226 7.6 多接口繼承 228 7.7 接口上的擴展方法 229 7.8 通過接口來實現多重繼承 230 7.9 版本控制 232 7.10 接口與類的比較 234 7.11 小結 234
第8章 值類型 235 8.1 結構 235 8.1.1 struct的初始化 238 8.1.2 default運算符的使用 240 8.1.3 值類型的繼承和接口 240 8.2 裝箱 240 8.3 枚舉 245 8.3.1 枚舉之間的類型兼容性 248 8.3.2 枚舉和字符串之間的轉換 249 8.3.3 枚舉作為標志使用 249 8.4 小結 253
第9章 合式類型 254 9.1 重寫object的成員 254 9.1.1 重寫ToString() 254 9.1.2 重寫GetHashCode() 255 9.1.3 重寫Equals() 257 9.1.4 相等性實現的指導原則 263 9.2 運算符重載 263 9.2.1 比較運算符 263 9.2.2 二元運算符 264 9.2.3 賦值運算符與二元運算符的結合 266 9.2.4 條件邏輯運算符 266 9.2.5 一元運算符 266 9.2.6 轉換運算符 267 9.2.7 轉換運算符的指導原則 269 9.3 引用其他程序集 269 9.3.1 更改程序集目標 269 9.3.2 引用程序集 270 9.3.3 類型封裝 270 9.4 定義命名空間 272 9.5 XML注釋 274 9.5.1 將XML注釋與代碼構造關聯到一起 275 9.5.2 生成XML文檔文件 277 9.6 垃圾回收 278 9.7 資源清理 280 9.7.1 終結器 280 9.7.2 使用using語句進行確定性終結 282 9.7.3 垃圾回收和終結 284 9.7.4 資源利用和終結的指導原則 285 9.8 小結 286
第10章 異常處理 287 10.1 多異常類型 287 10.2 捕捉異常 288 10.3 常規catch塊 290 10.4 異常處理的指導原則 291 10.5 定義自定義異常 293 10.6 小結 297
第11章 泛型 298 11.1 如果C#沒有泛型 298 11.2 泛型類型概述 303 11.2.1 泛型類的使用 303 11.2.2 簡單泛型類的定義 305 11.2.3 泛型的優點 305 11.2.4 類型參數命名的指導原則 306 11.2.5 泛型接口和struct 306 11.2.6 構造器和終結器的定義 308 11.2.7 默認值的指定 309 11.2.8 多個類型參數 310 11.2.9 嵌套泛型類型 311 11.2.10 在“類型參數”兼容的前提下,泛型類的實例之間的類型兼容性 312 11.3 約束 312 11.3.1 接口約束 314 11.3.2 基類約束 316 11.3.3 struct/class約束 317 11.3.4 多個約束 317 11.3.5 構造器約束 318 11.3.6 約束繼承 318 11.4 泛型方法 322 11.4.1 類型推斷 323 11.4.2 約束的指定 324 11.5 泛型的內部機制 325 11.5.1 基于值類型的泛型的實例化 327 11.5.2 基于引用類型的泛型的實例化 327 11.6 小結 328
第12章 委托和Lambda表達式 329 12.1 委托概述 329 12.1.1 背景 329 12.1.2 委托數據類型 331 12.1.3 委托的內部機制 333 12.1.4 委托類型的定義 333 12.1.5 委托的實例化 334 12.2 匿名方法 338 12.3 系統定義的委托:Func 340 12.4 Lambda表達式 341 12.4.1 語句Lambda 342 12.4.2 表達式Lambda 344 12.4.3 外部變量 347 12.4.4 表達式樹 350 12.5 小結 354
第13章 事件 355 13.1 使用multicast委托來編碼Observer模式 355 13.1.1 定義Subscriber方法 356 13.1.2 定義Publisher 357 13.1.3 連接Publisher和Subscriber 358 13.1.4 調用委托 359 13.1.5 檢查空值 360 13.1.6 委托運算符 361 13.1.7 順序調用 363 13.1.8 錯誤處理 365 13.1.9 方法返回值和傳引用 367 13.2 事件 368 13.2.1 事件的作用 368 13.2.2 事件的聲明 369 13.2.3 編碼規范 370 13.2.4 泛型和委托 372 13.2.5 自定義事件的實現 375 13.3 小結 376
第14章 支持標準查詢運算符的集合接口 377 14.1 匿名類型和隱式局部變量聲明 378 14.1.1 匿名類型 378 14.1.2 隱式類型的局部變量 379 14.1.3 匿名類型和隱式局部變量的更多注意事項 380 14.2 集合初始化器 383 14.3 是什么使類成為一個集合:IEnumerableT 385 14.3.1 foreach和數組 385 14.3.2 foreach和IEnumerableT 386 14.3.3 foreach循環內不要修改集合 389 14.4 標準查詢運算符 390 14.4.1 使用Where()來篩選 393 14.4.2 使用Select()來投射 394 14.4.3 推遲執行 396 14.4.4 使用OrderBy()和ThenBy()來排序 398 14.4.5 使用Join()來執行內部聯接 404 14.4.6 使用GroupJoin()實現一對多關系 407 14.4.7 調用SelectMany() 409 14.4.8 更多標準查詢運算符 411 14.5 小結 414
第15章 查詢表達式 416 15.1 查詢表達式概述 416 15.1.1 投射 418 15.1.2 篩選 423 15.1.3 排序 424 15.1.4 Let 425 15.1.5 分組 427 15.2 查詢表達式作為方法調用 431 15.3 小結 432
第16章 構建自定義集合 433 16.1 更多集合接口 434 16.1.1 IListT與IDictionaryTKey,TValue 434 16.1.2 IComparableT 435 16.1.3 ICollectionT 437 16.2 主要集合類 437 16.2.1 列表集合:ListT 437 16.2.2 字典集合:DictionaryTKey,TValue 441 16.2.3 已排序集合:SortedDictionaryTKey,TValue和SortedListT 445 16.2.4 棧集合:StackT 447 16.2.5 隊列集合:QueueT 447 16.2.6 鏈表:LinkedListT 448 16.3 提供一個索引運算符 449 16.4 返回Null或者空集合 452 16.5 迭代器 452 16.5.1 迭代器的定義 453 16.5.2 迭代器語法 453 16.5.3 從迭代器yield值 454 16.5.4 迭代器和狀態 456 16.5.5 更多的迭代器例子 457 16.5.6 將yield return語句放到循環中 459 16.5.7 取消更多的迭代:yield break 461 16.5.8 在單個類中創建多個迭代器 463 16.5.9 yield語句的特征 464 16.6 小結 464
第17章 反射和attribute 465 17.1 反射 465 17.1.1 使用System.Type訪問元數據 466 17.1.2 成員調用 468 17.1.3 泛型類型上的反射 472 17.2 attribute 475 17.2.1 自定義attribute 478 17.2.2 查找attribute 478 17.2.3 使用構造器來初始化attribute 479 17.2.4 System.AttributeUsage-Attribute 484 17.2.5 具名參數 485 17.3 小結 496
第18章 多線程處理 497 18.1 獨立線程的運行和控制 499 18.1.1 線程的啟動 500 18.1.2 線程管理 501 18.2 向線程傳遞參數 502 18.3 線程池處理 506 18.4 未處理的異常 507 18.5 同步 509 18.5.1 使用Monitor來同步 511 18.5.2 使用lock關鍵字 512 18.5.3 lock對象的選擇 514 18.5.4 為什么要避免在this和typeof(type)上鎖定 514 18.5.5 將字段聲明為volatile 514 18.5.6 使用System.Threading.Interlocked類 515 18.5.7 多個線程時的事件通知 516 18.5.8 同步設計最佳實踐 517 18.5.9 更多的同步類型 518 18.6 計時器 522 18.7 小結 527
第19章 多線程處理模式 528 19.1 Asynchronous Results模式 528 19.1.1 Asynchronous Results模式概述 529 19.1.2 向輪換線程傳入數據以及從輪換線程傳出數據 531 19.1.3 接收線程完成通知 536 19.1.4 傳遞任意狀態 538 19.1.5 Asynchronous Results小結 540 19.2 Background Worker模式 541 19.2.1 模式的建立 543 19.2.2 異常處理 544 19.3 Windows窗體 544 19.4 小結 547
第20章 平臺互操作性和不安全的代碼 548 20.1 平臺調用 549 20.1.1 外部函數的聲明 549 20.1.2 參數的數據類型 550 20.1.3 使用ref而不是指針 551 20.1.4 為順序布局使用StructLayoutAttribute 551 20.1.5 錯誤處理 552 20.1.6 使用SafeHandle 554 20.1.7 外部函數的調用 556 20.1.8 用包裝簡化API調用 559 20.1.9 函數指針映射到委托 560 20.1.10 指導原則 560 20.2 指針和地址 560 20.2.1 不安全的代碼 560 20.2.2 指針的聲明 561 20.2.3 指針的賦值 563 20.2.4 指針的解引用 565 20.2.5 訪問被引用物的類型的成員 566 20.3 小結 567
第21章 CLI 569 21.1 CLI的定義 569 21.2 CLI實現 570 21.3 C#編譯成機器碼 571 21.4 運行時 572 21.4.1 垃圾回收 573 21.4.2 .NET的垃圾回收 573 21.4.3 類型安全 574 21.4.4 代碼訪問安全性 574 21.4.5 平臺可移植性 574 21.4.6 性能 575 21.5 應用程序域 576 21.6 程序集、清單和模塊 576 21.7 公共中間語言 578 21.8 公共類型系統 578 21.9 公共語言規范 579 21.10 基類庫 579 21.11 元數據 579 21.12 小結 580
附錄A 下載和安裝C#編譯器與CLI平臺 581 附錄B 完整源代碼清單 583 附錄C C# 3.0主題 609
|
序: |
|