-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
12/13 新書到! 10/8 新書到! 10/1 新書到! 9/24 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

深入解析C#(世界級頂尖技術專家“十年磨一劍”的經典之作)

( 簡體 字)
作者:(美)Jon Skeet類別:1. -> 程式設計 -> .NET -> C#
譯者:周靖;朱永光
出版社:人民郵電出版社深入解析C#(世界級頂尖技術專家“十年磨一劍”的經典之作) 3dWoo書號: 26267
詢問書籍請說出此書號!

缺書
不接受訂購

出版日:4/29/2010
頁數:333
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
不接受訂購
ISBN:9787115226488
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

內容簡介:

本書是針對那些想提高編程技能的C#開發人員而作。本書的一個基本原則是側重于從現象中挖掘本質,而不是簡單羅列C#的每個知識點。如果你就是喜歡探索本源的人,那么本書正適合你。作者深入探索了嶄新的C# 2和3特性及其核心概念,并將新特性融入C#代碼中,這使本書更獨具匠心。
  本書適合各層次.NET開發人員閱讀。

目錄:

第一部分 基礎知識

第1章 C#開發的進化史 2
1.1 實戰演變:變化的代碼 3
1.1.1 定義產品類型 3
1.1.2 按名稱對產品進行排序 7
1.1.3 查詢集合 9
1.1.4 表示未知的價格 11
1.1.5 LINQ和查詢表達式 12
1.2 C#(及相關技術)簡史 16
1.2.1 C#問世前的世界 16
1.2.2 C#和.NET降生 17
1.2.3 .NET 1.1的小幅更新和第一次重要跨越:.NET 2.0 18
1.2.4 “下一代”產品 19
1.2.5 歷史回顧和爭奪開發者之戰 20
1.3 .NET平臺 22
1.3.1 區分語言、運行時和庫 22
1.3.2 解開版本號的謎團 23
1.4 采用代碼段形式的全能代碼 25
1.4.1 代碼段及其擴展形式 25
1.4.2 Snippy介紹 27
1.5 小結 28

第2章 C# 1所搭建的核心基礎 29
2.1 委托 30
2.1.1 簡單委托的構成 30
2.1.2 合并和刪除委托 35
2.1.3 對事件的簡單討論 36
2.1.4 委托小結 37
2.2 類型系統的特征 38
2.2.1 C#在類型系統世界中的位置 38
2.2.2 C# 1的類型系統在什么時候不夠用 40
2.2.3 C# 1的類型系統在什么時候會礙事 43
2.2.4 類型系統特征總結 43
2.3 值類型和引用類型 44
2.3.1 現實世界中的值和引用 44
2.3.2 值類型和引用類型基礎知識 45
2.3.3 走出誤區 46
2.3.4 裝箱和拆箱 47
2.3.5 值類型和引用類型小結 48
2.4 C# 2和3:構建于堅實基礎之上的新特性 49
2.4.1 與委托有關的特性 49
2.4.2 與類型系統有關的特性 51
2.4.3 與值類型有關的特性 52
2.5 小結 53

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

第3章 用泛型實現參數化類型 56
3.1 為什么需要泛型 56
3.2 日常使用的簡單泛型 58
3.2.1 通過例子來學習:泛型字典 58
3.2.2 泛型類型和類型參數 60
3.2.3 泛型方法和判讀泛型聲明 63
3.3 深化與提高 66
3.3.1 類型約束 66
3.3.2 泛型方法類型實參的類型推斷 70
3.3.3 實現泛型 71
3.4 高級泛型 75
3.4.1 靜態字段和靜態構造函數 76
3.4.2 JIT編譯器如何處理泛型 77
3.4.3 泛型迭代 79
3.4.4 反射和泛型 82
3.5 .NET 2.0中的泛型集合類 85
3.5.1 ListT 85
3.5.2 DictionaryTKey,TValue 88
3.5.3 QueueT和StackT 89
3.5.4 SortedListTKey,TValue和SortedDictionaryTKey,TValue 90
3.5.5 LinkedListT 90
3.6 泛型在C#和其他語言中的限制 91
3.6.1 協變性和逆變性的缺乏 91
3.6.2 缺乏操作符約束或者“數值”約束 95
3.6.3 缺乏泛型屬性、索引器和其他成員類型 96
3.6.4 同C++模板的對比 97
3.6.5 和Java泛型的對比 98
3.7 小結 99

第4章 可空類型 101
4.1 沒有值時怎么辦 101
4.1.1 為什么值類型的變量不能是null 102
4.1.2 在C# 1中表示空值的模式 102
4.2 System.NullableT和System.Nullable 104
4.2.1 NullableT簡介 104
4.2.2 裝箱和拆箱 106
4.2.3 NullableT實例的相等性 107
4.2.4 來自非泛型Nullable類的支持 108
4.3 C# 2為可空類型提供的語法糖 109
4.3.1 ?修飾符 109
4.3.2 使用null進行賦值和比較 110
4.3.3 可空轉換和操作符 112
4.3.4 可空邏輯 115
4.3.5 空接合操作符 116
4.4 可空類型的新奇用法 118
4.4.1 嘗試一個不使用輸出參數的操作 119
4.4.2 空接合操作符讓比較不再痛苦 121
4.5 小結 123

第5章 進入快速通道的委托 124
5.1 向笨拙的委托語法說拜拜 125
5.2 方法組轉換 126
5.3 協變性和逆變性 127
5.4 使用匿名方法的內聯委托操作 130
5.4.1 從簡單的開始:處理一個參數 131
5.4.2 匿名方法的返回值 133
5.4.3 忽略委托參數 134
5.5 在匿名方法中捕捉變量 136
5.5.1 定義閉包和不同的變量類型 136
5.5.2 測試被捕獲的變量的行為 137
5.5.3 捕獲變量到底有什么用處 138
5.5.4 捕獲變量的延長生存期 139
5.5.5 局部變量實例化 140
5.5.6 共享和非共享的變量混合使用 142
5.5.7 捕獲變量的使用規則和小結 143
5.6 小結 144

第6章 實現迭代器的捷徑 146
6.1 C# 1:手寫迭代器的痛苦 147
6.2 C# 2:利用yield語句簡化迭代器 149
6.2.1 迭代器塊和yield return簡介 150
6.2.2 觀察迭代器的工作流程 151
6.2.3 進一步了解迭代器執行流程 153
6.2.4 具體實現中的奇特之處 156
6.3 真實的例子:迭代范圍值 157
6.3.1 迭代時刻表中的日期 157
6.3.2 定義Range類的作用域 158
6.3.3 使用迭代器塊的實現代碼 159
6.4 使用CCR實現偽同步代碼 162
6.5 小結 164

第7章 結束C# 2的講解:最后的一些特性 166
7.1 分部類型 167
7.1.1 在多個文件中創建一個類型 167
7.1.2 分部類型的使用 169
7.1.3 C# 3獨有的分部方法 170
7.2 靜態類型 172
7.3 獨立的取值方法/賦值方法屬性訪問器 174
7.4 命名空間別名 175
7.4.1 限定的命名空間別名 176
7.4.2 全局命名空間別名 177
7.4.3 外部別名 178
7.5 Pragma指令 179
7.5.1 警告pragma 179
7.5.2 校驗和pragma 180
7.6 非安全代碼中的固定大小的緩沖區 180
7.7 把內部成員暴露給選定的程序集 182
7.7.1 在簡單情況下的友元程序集 182
7.7.2 為什么使用InternalsVisibleTo 184
7.7.3 InternalsVisibleTo和簽名程序集 184
7.8 小結 185

第三部分 C# 3——革新寫代碼的方式

第8章 用智能的編譯器來防錯 188
8.1 自動實現的屬性 189
8.2 隱式類型的局部變量 191
8.2.1 用var聲明局部變量 191
8.2.2 隱式類型的限制 192
8.2.3 隱式類型的優缺點 193
8.2.4 建議 194
8.3 簡化的初始化 194
8.3.1 定義示例類型 195
8.3.2 設置簡單屬性 196
8.3.3 為嵌入對象設置屬性 197
8.3.4 集合初始化列表 198
8.3.5 初始化特性的應用 200
8.4 隱式類型的數組 201
8.5 匿名類型 202
8.5.1 第一次邂逅匿名類型 202
8.5.2 匿名類型的成員 204
8.5.3 投影初始化列表 205
8.5.4 重點何在 206
8.6 小結 207

第9章 Lambda表達式和表達式樹 208
9.1 作為委托的Lambda表達式 209
9.1.1 準備工作:Func...委托類型簡介 209
9.1.2 第一次轉換成Lambda表達式 210
9.1.3 用一個簡單表達式作為主體 211
9.1.4 隱式類型的參數列表 211
9.1.5 單一參數的快捷語法 212
9.2 使用ListT和事件的簡單例子 213
9.2.1 對列表進行篩選、排序并設置其他操作 213
9.2.2 在事件處理程序中進行記錄 214
9.3 表達式樹 216
9.3.1 在程序中構建表達式樹 216
9.3.2 將表達式樹編譯成委托 217
9.3.3 將C# Lambda表達式轉換成表達式樹 218
9.3.4 位于LINQ核心的表達式樹 221
9.4 類型推斷和重載決策發生的改變 222
9.4.1 改變的起因:精簡泛型方法調用 222
9.4.2 推斷匿名函數的返回類型 223
9.4.3 分兩個階段進行的類型推斷 225
9.4.4 選擇正確的被重載的方法 227
9.4.5 類型推斷和重載決策 229
9.5 小結 229

第10章 擴展方法 231
10.1 未引入擴展方法之前的狀態 231
10.2 擴展方法的語法 233
10.2.1 聲明擴展方法 234
10.2.2 調用擴展方法 235
10.2.3 擴展方法是怎樣被發現的 236
10.2.4 在空引用上調用方法 237
10.3 .NET 3.5中的擴展方法 238
10.3.1 從Enumerable開始起步 238
10.3.2 用Where篩選并將方法調用鏈接到一起 240
10.3.3 用Select方法和匿名類型進行投影 241
10.3.4 用OrderBy方法進行排序 242
10.3.5 涉及鏈接的實際例子 243
10.4 使用思路和原則 244
10.4.1 “擴展世界”和使接口更豐富 245
10.4.2 流暢接口 245
10.4.3 理智使用擴展方法 247
10.5 小結 248

第11章 查詢表達式和LINQ to Object 249
11.1 LINQ介紹 250
11.1.1 這個名稱中有什么 250
11.1.2 LINQ中的基礎概念 251
11.1.3 定義示例數據模型 254
11.2 簡單的開始:選擇元素 256
11.2.1 以數據源作為開始,以選擇作為結束 256
11.2.2 作為查詢表達式基礎的編譯器轉換 257
11.2.3 范圍變量和重要的投影 259
11.2.4 Cast、OfType和顯式類型的范圍變量 261
11.3 對序列進行過濾和排序 262
11.3.1 使用where子句進行過濾 263
11.3.2 退化的查詢表達式 264
11.3.3 使用orderby子句進行排序 264
11.4 let子句和透明標識符 266
11.4.1 用let來進行中間計算 266
11.4.2 透明標識符 267
11.5 聯接 268
11.5.1 使用join子句的內聯接 269
11.5.2 使用join...into子句進行分組聯接 272
11.5.3 使用多個from子句進行交叉聯接 274
11.6 分組和延續 277
11.6.1 使用group...by子句進行分組 277
11.6.2 查詢延續 280
11.7 小結 283

第12章 超越集合的LINQ 284
12.1 LINQ to SQL 285
12.1.1 創建缺陷數據庫和實體 285
12.1.2 用示例數據填充數據庫 287
12.1.3 用查詢表達式訪問數據庫 288
12.1.4 更新數據庫 293
12.1.5 LINQ to SQL小結 294
12.2 用IQueryable和IQueryProvider進行轉換 294
12.2.1 IQueryableT和相關接口的介紹 295
12.2.2 模擬接口實現來記錄調用 296
12.2.3 把表達式粘合在一起:Queryable的擴展方法 298
12.2.4 模擬實際運行的查詢提供器 300
12.2.5 包裝IQueryable 301
12.3 LINQ to DataSet 302
12.3.1 處理非類型化數據集 302
12.3.2 處理類型化數據集 303
12.4 LINQ to XML 306
12.4.1 XElement和XAttribute 306
12.4.2 把示例缺陷數據轉換為XML 307
12.4.3 在LINQ to XML中進行查詢 309
12.4.4 LINQ to XML小結 311
12.5 超越.NET 3.5的LINQ 311
12.5.1 第三方LINQ 312
12.5.2 未來的微軟LINQ技術 315
12.6 小結 317

第13章 新時代的優雅代碼 319
13.1 語言特性 320
13.1.1 更重視函數化 320
13.1.2 靜態、動態、隱式、顯式或混合 321
13.2 把委托作為實現繼承的新方式 321
13.3 易讀的結果高于實現 322
13.4 并行宇宙中的生活 323
13.5 再見 324

附錄A LINQ標準查詢操作符 325
序: