变态重口极致另类在线-波多久久夜色精品国产-波多野结衣在线观看一区-波多野结衣在线观看一区二区-污污的网站免费阅读-污污视频网址

東坡下載:內容最豐富最安全的下載站!

幫助|文件類型庫|最新更新|下載分類|排行榜

桌面主題教育相關素材下載字體下載外語學習高考考研建筑圖集高考作文書法字體桌面壁紙CAD圖紙考研素材

首頁硬件驅動硬件教程 → 精通C#(中文版) 完整免費版【共1201頁】

精通C#(中文版)

精通C#(中文版)完整免費版【共1201頁】

  • 大小:26.0M
  • 語言:中文
  • 平臺:WinAll
  • 更新:2015-06-12 11:1
  • 等級:
  • 類型:書集教程
  • 網站:http://www.astro-tech.com.cn
  • 授權:免費軟件
  • 廠商:
  • 產地:國產軟件
好用好玩 50%(0)
坑爹 坑爹 50%(0)
軟件介紹軟件截圖相關軟件軟件教程網友評論下載地址

精通C#是一本在業內頗受好評的書,該書語言生動,內容涵蓋面廣泛,收到不少讀者的好評和追捧,本節內容小編為大家整理帶來的是該書的pdf格式完整中文版,共有1201頁,如果你想要查閱這本精通C#(中文版)電子書的話,只需點擊本文相應的下載地址進行下載即可!該電子書完全免費,有需要的朋友可以放心下載查閱!

精通C#(中文版)目錄

第一部分 C#與.NET平臺

第1章 .NET之道 2

1.1  初識.NET平臺  2

1.2  .NET平臺構造塊(CLR、CTS和CLS)簡介  3

1.2.1  基礎類庫的作用  3

1.2.2  C#的優點  4

1.2.3  托管代碼與非托管代碼  5

1.3  其他支持.NET的編程語言  5

1.4  .NET程序集概覽  7

1.4.1  CIL的作用  8

1.4.2  .NET類型元數據的作用  10

1.4.3  程序集清單的作用  11

1.5  CTS  12

1.5.1  CTS類類型  12

1.5.2  CTS接口類型  12

1.5.3  CTS結構類型  13

1.5.4  CTS枚舉類型  13

1.5.5  CTS委托類型  13

1.5.6  CTS類型成員  14

1.5.7  內建的CTS數據類型  14

1.6  CLS  15

1.7  CLR  16

1.8  程序集/命名空間/類型的區別  17

1.8.1  Microsoft根命名空間的作用  20

1.8.2  以編程方式訪問命名空間  20

1.8.3  引用外部程序集  21

1.9  使用ildasm.exe探索程序集  22

1.9.1  查看CIL代碼  23

1.9.2  查看類型元數據  23

1.9.3  查看程序集元數據(即清單)  24

1.10  .NET的平臺無關性  24

1.11  Windows 8應用程序簡介  25

1.11.1  構建Windows 8應用程序  26

1.11.2  .NET在Windows 8中的作用  27

1.12  小結  28

第2章 構建C#應用程序  29

2.1  .NET Framework 4.5 SDK的作用  29

2.2  用csc.exe構建C#應用程序  30

2.2.1  指定輸入輸出目標  31

2.2.2  引用外部程序集  32

2.2.3  引用多個外部程序集  33

2.2.4  編譯多個源文件  33

2.2.5  使用C#響應文件  34

2.3  使用Notepad++構建.NET應用程序  35

2.4  使用SharpDevelop構建.NET應用程序  36

2.5  使用Visual C# Express構建.NET應用程序  38

2.6  使用Visual Studio構建.NET應用程序  39

2.6.1  Visual Studio的獨特功能  39

2.6.2  使用New Project對話框指向.NET Framework  40

2.6.3  解決方案資源管理器  40

2.6.4  Class View工具  42

2.6.5  Object Browser工具  43

2.6.6  集成對代碼重構的支持  43

2.6.7  代碼擴展和圍繞技術  45

2.6.8  可視化Class Designer  47

2.6.9  集成的.NET Framework 4.5 SDK文檔系統  50

2.7  小結  51

第二部分 C#核心編程結構

第3章 C#核心編程結構Ⅰ  54

3.1  一個簡單的C#程序  54

3.1.1  Main()方法的其他形式  55

3.1.2  指定應用程序錯誤代碼  56

3.1.3  處理命令行參數  57

3.1.4  使用Visual Studio指定命令行參數  59

3.2  有趣的題外話:System.Environment類的其他成員  59

3.3  System.Console類  61

3.3.1  使用Console類進行基本的輸入和輸出  61

3.3.2  格式化控制臺輸出  62

3.3.3  格式化數值數據  63

3.3.4  在控制臺應用程序外格式化數值數據  64

3.4  系統數據類型和相應的C#關鍵字  64

3.4.1  變量聲明和初始化  65

3.4.2  內建數據類型與new操作符  67

3.4.3  數據類型類的層次結構  67

3.4.4  數值數據類型的成員  69

3.4.5  System.Boolean的成員  69

3.4.6  System.Char的成員  69

3.4.7  從字符串數據中解析數值  70

3.4.8  System.DateTime和System.TimeSpan  70

3.4.9  System.Numerics.dll程序集  71

3.5  使用字符串數據  72

3.5.1  基本的字符串操作  73

3.5.2  字符串拼接  73

3.5.3  轉義字符  74

3.5.4  定義逐字字符串  75

3.5.5  字符串和相等性  75

3.5.6  字符串是不可變的  76

3.5.7  System.Text.StringBuilder類型  77

3.6  窄化和寬化數據類型轉換  78

3.6.1  checked關鍵字  80

3.6.2  設定項目級別的溢出檢測  81

3.6.3  unchecked關鍵字  82

3.7  隱式類型本地變量  82

3.7.1  隱式類型變量的限制  84

3.7.2  隱式類型數據是強類型數據  84

3.7.3  隱式類型本地變量的用途  85

3.8  C#迭代結構  86

3.8.1  for循環  86

3.8.2  foreach循環  87

3.8.3  while和do/while循環結構  87

3.9  條件結構和關系/相等操作符  88

3.9.1  if/else語句  88

3.9.2  關系/相等操作符  88

3.9.3  邏輯操作符  89

3.9.4  switch語句  89

3.10  小結  91

第4章 C#核心編程結構Ⅱ  92

4.1  方法和參數修飾符  92

4.1.1  默認的參數傳遞行為  93

4.1.2  out修飾符  94

4.1.3  ref修飾符  95

4.1.4  params修飾符  96

4.1.5  定義可選參數  97

4.1.6  使用命名參數調用方法  98

4.1.7  成員重載  99

4.2  C#數組  101

4.2.1  C#數組初始化語法  102

4.2.2  隱式類型本地數組  103

4.2.3  定義object數組  103

4.2.4  使用多維數組  104

4.2.5  數組作為參數(和返回值)  105

4.2.6  System.Array基類  106

4.3  枚舉類型  107

4.3.1  控制枚舉的底層存儲  108

4.3.2  聲明枚舉變量  109

4.3.3  System.Enum類型  110

4.3.4  動態獲取枚舉的名稱/值對  110

4.4  結構類型  112

4.5  值類型和引用類型  115

4.5.1  值類型、引用類型和賦值操作符  116

4.5.2  包含引用類型的值類型  117

4.5.3  按值傳遞引用類型  119

4.5.4  按引用傳遞引用類型  120

4.5.5  值類型和引用類型:最后的細節  121

4.6  C#可空類型  122

4.6.1  使用可空類型  123

4.6.2  ??操作符  124

4.7  小結  124

第三部分 C#面向對象編程

第5章 封裝  126

5.1  C#類類型  126

5.2  構造函數  129

5.2.1  默認構造函數的作用  129

5.2.2  定義自定義的構造函數  130

5.2.3  再談默認構造函數  131

5.3  this關鍵字的作用  132

5.3.1  使用this進行串聯構造函數調用  133

5.3.2  觀察構造函數流程  135

5.3.3  再談可選參數  137

5.4  static關鍵字  138

5.4.1  定義靜態數據  138

5.4.2  定義靜態方法  140

5.4.3  定義靜態構造函數  141

5.4.4  定義靜態類  143

5.5  定義OOP的支柱  144

5.5.1  封裝的作用  144

5.5.2  繼承的作用  144

5.5.3  多態的作用  146

5.6  C#訪問修飾符  147

5.6.1  默認的訪問修飾符  148

5.6.2  訪問修飾符和嵌套類型  148

5.7  第一個支柱:C#的封裝服務  149

5.7.1  使用傳統的訪問方法和修改方法執行封裝  149

5.7.2  使用.NET屬性進行封裝  151

5.7.3  使用類的屬性  154

5.7.4  只讀和只寫屬性  155

5.7.5  靜態屬性  156

5.8  自動屬性  156

5.8.1  與自動屬性交互  158

5.8.2  關于自動屬性和默認值  158

5.9  對象初始化語法  160

5.9.1  使用初始化語法調用自定義構造函數  161

5.9.2  初始化內部類型  162

5.10  常量數據  163

5.10.1  只讀字段  164

5.10.2  靜態只讀字段  165

5.11  分部類型  165

5.12  小結  167

第6章 繼承和多態  168

6.1  繼承的基本機制  168

6.1.1  指定既有類的父類  169

6.1.2  多個基類  170

6.1.3  sealed關鍵字  171

6.2  回顧Visual Studio類關系圖  172

6.3  OOP的第二個支柱:繼承  173

6.3.1  使用base關鍵字控制基類的創建  174

6.3.2  家族的秘密:protected關鍵字  176

6.3.3  增加密封類  177

6.4  包含/委托編程  178

6.5  OOP的第三個支柱:C#的多態支持  180

6.5.1  virtual和override關鍵字  181

6.5.2  使用Visual Studio IDE重寫虛方法  183

6.5.3  密封虛成員  184

6.5.4  抽象類  184

6.5.5  構建多態接口  186

6.5.6  成員投影  189

6.6  基類/派生類的轉換規則  191

6.6.1  C#的as關鍵字  192

6.6.2  C#的is關鍵字  193

6.7  超級父類:System.Object  193

6.7.1  重寫System.Object.ToString()  196

6.7.2  重寫System.Object.Equals()  196

6.7.3  重寫System.Object.GetHashCode()  197

6.7.4  測試修改后的Person類  198

6.7.5  System.Object的靜態成員  199

6.8  小結  199

第7章 結構化異常處理  200

7.1  錯誤、bug與異常  200

7.2  .NET異常處理的作用  201

7.2.1  .NET異常處理的四要素  202

7.2.2  System.Exception基類  202

7.3  最簡單的例子  203

7.3.1  引發普通的異常  205

7.3.2  捕獲異常  206

7.4  配置異常的狀態  207

7.4.1  TargetSite屬性  207

7.4.2  StackTrace屬性  208

7.4.3  HelpLink屬性  208

7.4.4  Data屬性  209

7.5  系統級異常  211

7.6  應用程序級異常  211

7.6.1  構建自定義異常,第一部分  212

7.6.2  構建自定義異常,第二部分  213

7.6.3  構建自定義異常,第三部分  214

7.7  處理多個異常  215

7.7.1  通用的catch語句  217

7.7.2  再次引發異常  218

7.7.3  內部異常  218

7.7.4  finally塊  219

7.8  誰在引發什么異常  220

7.9  未處理異常的后果  220

7.10  使用Visual Studio調試未處理的異常  221

7.11  小結  222

第8章 接口  223

8.1  接口類型  223

8.2  定義自定義接口  226

8.3  實現接口  227

8.4  在對象級別調用接口成員  229

8.4.1  獲取接口引用:as關鍵字  230

8.4.2  獲取接口引用:is關鍵字  230

8.5  接口作為參數  231

8.6  接口作為返回值  233

8.7  接口類型數組  233

8.8  使用Visual Studio實現接口  234

8.9  顯式接口實現  235

8.10  設計接口層次結構  238

8.11  構建可枚舉類型(IEnumerable和IEnumerator)  241

8.11.1  用yield關鍵字構建迭代器方法  243

8.11.2  構建命名迭代器  244

8.12  構建可克隆的對象(ICloneable)  245

8.13  構建可比較的對象(IComparable)  249

8.13.1  指定多個排序順序  252

8.13.2  自定義屬性、自定義排序類型  253

8.14  小結  253

第四部分 高級C#編程結構

第9章 集合與泛型  256

9.1  集合類的動機  256

9.1.1  System.Collections命名空間  257

9.1.2  System.Collections.Specialized命名空間  259

9.2  非泛型集合的問題  260

9.2.1  性能問題  260

9.2.2  類型安全問題  263

9.2.3  初識泛型集合  265

9.3  泛型類型參數的作用  266

9.3.1  為泛型類/結構指定類型參數  267

9.3.2  為泛型成員指定類型參數  268

9.3.3  為泛型接口指定類型參數  269

9.4  System.Collections.Generic命名空間  270

9.4.1  集合初始化語法  271

9.4.2  使用List<T>類  272

9.4.3  使用Stack<T>類  273

9.4.4  使用Queue<T>類  274

9.4.5  使用SortedSet<T>類  275

9.5  System.Collections.ObjectModel命名空間  277

9.6  創建自定義泛型方法  279

9.7  創建自定義泛型結構和類  282

9.8  類型參數的約束  284

9.8.1  使用where關鍵字的示例  284

9.8.2  操作符約束的不足  285

9.9  小結  286

第10章 委托、事件和Lambda表達式  287

10.1  .NET委托類型  287

10.1.1  在C#中定義委托類型  288

10.1.2  System.MulticastDelegate與System.Delegate基類  290

10.2  最簡單的委托示例  291

10.3  使用委托發送對象狀態通知  293

10.3.1  支持多路廣播  296

10.3.2  從委托的調用列表中移除成員  297

10.3.3  方法組轉換語法  298

10.4  泛型委托  300

10.5  C#事件  303

10.5.1  event關鍵字  304

10.5.2  揭開事件的神秘面紗  305

10.5.3  監聽傳入的事件  306

10.5.4  使用Visual Studio簡化事件注冊  307

10.5.5  創建自定義的事件參數  308

10.5.6  泛型EventHandler<T>委托  309

10.6  C#匿名方法  310

10.7  Lambda表達式  313

10.7.1  剖析Lambda表達式  315

10.7.2  使用多個語句處理參數  316

10.7.3  含有多個(或零個)參數的Lambda表達式  317

10.7.4  使用Lambda表達式重新編寫CarEvents示例  318

10.8  小結  319

第11章 高級C#語言特性  320

11.1  索引器方法  320

11.1.1  使用字符串值索引對象  322

11.1.2  重載索引器方法  323

11.1.3  多維的索引器  323

11.1.4  在接口類型上定義索引器  324

11.2  操作符重載  325

11.2.1  重載二元操作符  325

11.2.2  +=與-=操作符  327

11.2.3  重載一元操作符  328

11.2.4  重載相等操作符  329

11.2.5  重載比較操作符  329

11.2.6  操作符重載的最后思考  330

11.3  自定義類型轉換  331

11.3.1  回顧:數值轉換  331

11.3.2  回顧:相關的類類型間的轉換  331

11.3.3  創建自定義轉換例程  332

11.3.4  Square類型的其他顯式轉換  334

11.3.5  定義隱式轉換例程  335

11.4  擴展方法  336

11.4.1  定義擴展方法  336

11.4.2  在實例層次上調用擴展方法  337

11.4.3  導入擴展方法  338

11.4.4  擴展方法的智能感知  339

11.4.5  擴展實現了指定接口的類型  339

11.5  匿名類型  340

11.5.1  定義匿名類型  341

11.5.2  匿名類型的內部表示方式  342

11.5.3  方法ToString()和GetHashCode()的實現  343

11.5.4  匿名類型的相等語義  344

11.5.5  包含匿名類型的匿名類型  345

11.6  指針類型  346

11.6.1  unsafe關鍵字  347

11.6.2  *和&操作符  348

11.6.3  不安全(與安全)交換功能  349

11.6.4  通過指針訪問字段  350

11.6.5  stackalloc關鍵字  350

11.6.6  使用fixed關鍵字固定類型  351

11.6.7  sizeof關鍵字  352

11.7  小結  352

第12章 LINQ to Object  353

12.1  LINQ特有的編程結構  353

12.1.1  隱式類型本地變量  354

12.1.2  對象和集合初始化語法  354

12.1.3  Lambda表達式  355

12.1.4  擴展方法  355

12.1.5  匿名類型  356

12.2  LINQ的作用  356

12.2.1  LINQ表達式是強類型的  357

12.2.2  核心LINQ程序集  357

12.3  將LINQ查詢應用于原始數組  358

12.3.1  再一次,不使用LINQ  359

12.3.2  反射LINQ結果集  360

12.3.3  LINQ和隱式類型本地變量  361

12.3.4  LINQ和擴展方法  362

12.3.5  延遲執行的作用  363

12.3.6  立即執行的作用  364

12.4  返回LINQ查詢的結果  365

12.5  將LINQ查詢應用到集合對象  367

12.5.1  訪問包含的子對象  367

12.5.2  將LINQ查詢應用于非泛型集合  368

12.5.3  使用OfType<T>()篩選數據  369

12.6  C# LINQ查詢操作符  369

12.6.1  基本的選擇語法  371

12.6.2  獲取數據子集  371

12.6.3  投影新數據類型  372

12.6.4  使用Enumerable獲取總數  373

12.6.5  反轉結果集  373

12.6.6  對表達式進行排序  374

12.6.7  維恩圖工具  374

12.6.8  移除重復  375

12.6.9  LINQ聚合操作  376

12.7  LINQ查詢語句的內部表示  376

12.7.1  用查詢操作符建立查詢表達式(復習)  377

12.7.2  使用Enumerable類型和Lambda表達式來建立查詢表達式  377

12.7.3  使用Enumerable類型和匿名方法來建立查詢表達式  379

12.7.4  用Enumerable類型和原始委托建立查詢表達式  379

12.8  小結  380

第13章 對象的生命周期  381

13.1  類、對象和引用  381

13.2  對象生命周期的基礎  382

13.2.1  CIL的new指令  383

13.2.2  將對象引用設置為空  384

13.3  應用程序根的作用  385

13.4  對象的代  386

13.5  .NET 1.0 至.NET 3.5的并發垃圾回收  387

13.6  .NET 4.0及后續版本  387

13.7  System.GC類型  388

13.8  構建可終結對象  391

13.8.1  重寫System.Object.Finalize()  392

13.8.2  終結過程的細節  393

13.9  構建可處置對象  394

13.10  構建可終結類型和可處置類型  397

13.11  延遲對象實例化  400

13.12  小結  403

第五部分 用.NET程序集編程

第14章 .NET程序集入門  406

14.1  定義自定義命名空間  406

14.1.1  使用完全限定名解決命名沖突  408

14.1.2  使用別名解決命名沖突  409

14.1.3  創建嵌套的命名空間  410

14.1.4  Visual Studio 的默認命名空間  411

14.2  .NET程序集的作用  412

14.2.1  程序集促進代碼重用  412

14.2.2  程序集確定類型邊界  412

14.2.3  程序集是可版本化的單元  412

14.2.4  程序集是自描述的  413

14.2.5  程序集是可配置的  413

14.3  .NET程序集的格式  413

14.3.1  Windows文件首部  413

14.3.2  CLR文件首部  414

14.3.3  CIL代碼、類型元數據和程序集清單  415

14.3.4  可選的程序集資源  415

14.4  構建和使用自定義類庫  416

14.4.1  清單  418

14.4.2  CIL  421

14.4.3  類型元數據  421

14.4.4  構建C#客戶端應用程序  422

14.4.5  構建Visual Basic客戶端應用程序  424

14.4.6  實現跨語言繼承  425

14.5  私有程序集  425

14.5.1  私有程序集的標識  426

14.5.2  探測過程  426

14.5.3  配置私有程序集  427

14.5.4  App.Config文件  428

14.6  共享程序集  430

14.6.1  全局程序集緩存  430

14.6.2  強名稱  431

14.6.3  在命令行生成強名稱  432

14.6.4  使用Visual Studio為程序集賦予強名稱  434

14.6.5  在GAC中安裝強名稱的程序集  436

14.7  使用共享程序集  437

14.8  配置共享程序集  439

14.8.1  凍結當前的共享程序集  439

14.8.2  構建共享程序集2.0.0.0版本  440

14.8.3  動態重定向到共享程序集的特定版本  441

14.9  發行者策略程序集  443

14.10  <codeBase>元素  444

14.11  System.Configuration命名空間  446

14.12  配置文件架構文檔  447

14.13  小結  448

第15章 類型反射、晚期綁定和基于特性的編程  449

15.1  類型元數據的必要性  449

15.1.1  查看(部分)EngineState枚舉的元數據  450

15.1.2  查看(部分)Car類型的元數據  451

15.1.3  研究TypeRef  452

15.1.4  記錄定義的程序集  452

15.1.5  記錄引用的程序集  453

15.1.6  記錄字符串字面量  453

15.2  反射  454

15.2.1  System.Type類  454

15.2.2  使用System.Object.GetType()得到Type引用  455

15.2.3  使用typeof()得到Type引用  455

15.2.4  使用System.Type.GetType()得到Type引用  455

15.3  構建自定義的元數據查看器  456

15.3.1  反射方法  456

15.3.2  反射字段和屬性  457

15.3.3  反射實現的接口  457

15.3.4  顯示其他信息  458

15.3.5  實現Main()  458

15.3.6  反射泛型類型  460

15.3.7  反射方法參數和返回值  460

15.4  動態加載程序集  461

15.5  反射共享程序集  464

15.6  晚期綁定  465

15.6.1  System.Activator類  466

15.6.2  調用沒有參數的方法  467

15.6.3  調用有參數的方法  468

15.7  .NET特性的作用  469

15.7.1  特性的使用者  470

15.7.2  在C#中使用特性  470

15.7.3  C#特性簡化符號  471

15.7.4  為特性指定構造參數  472

15.7.5  Obsolete特性  472

15.8  構建自定義特性  473

15.8.1  應用自定義特性  473

15.8.2  命名屬性語法  474

15.8.3  限制特性使用  474

15.9  程序集級別特性  475

15.10  使用早期綁定反射特性  477

15.11  使用晚期綁定反射特性  478

15.12  反射、晚期綁定和自定義特性的使用背景  479

15.13  構建可擴展的應用程序  480

15.13.1  構建CommonSnappable-Types.dll  480

15.13.2  構建C#插件  481

15.13.3  構建Visual Basic插件  482

15.13.4  構建可擴展的Windows Forms應用程序  482

15.14  小結  485

第16章 動態類型和動態語言運行時  486

16.1  dynamic關鍵字的作用  486

16.1.1  調用動態聲明的數據的成員  488

16.1.2  Microsoft.CSharp.dll程序集的作用  489

16.1.3  dynamic關鍵字的作用域  490

16.1.4  dynamic關鍵字的限制  491

16.1.5  dynamic關鍵字的實際用途  491

16.2  DLR的作用  492

16.2.1  表達式樹的作用  492

16.2.2  System.Dynamic命名空間的作用  493

16.2.3  表達式樹的動態運行時查找  493

16.3  使用動態類型簡化后期綁定調用  494

16.4  使用動態數據簡化COM互操作  497

16.4.1  主互操作程序集的作用  498

16.4.2  嵌入互操作元數據  499

16.4.3  普通COM互操作的難點  500

16.5  使用C# 動態數據進行COM互操作  500

16.6  不使用C# 動態數據進行COM互操作  504

16.7  小結  505

第17章 進程、應用程序域和對象上下文  506

17.1  Windows進程的作用  506

17.2  .NET平臺下與進程進行交互  508

17.2.1  列舉運行中的進程  510

17.2.2  特定的進程  511

17.2.3  進程的線程集合  511

17.2.4  進程中的模塊集合  513

17.2.5  以編程方式啟動或結束進程  514

17.2.6  使用ProcessStartInfo類控制進程的啟動  515

17.3  .NET應用程序域  516

17.4  與默認應用程序域進行交互  518

17.4.1  枚舉加載的程序集  519

17.4.2  接收程序集加載通知  520

17.5  創建新的應用程序域  521

17.5.1  在自定義應用程序域中加載程序集  522

17.5.2  以編程方式卸載應用程序域  523

17.6  對象上下文邊界  525

17.6.1  上下文靈活和上下文綁定類型  525

17.6.2  定義上下文綁定對象  526

17.6.3  研究對象的上下文  526

17.7  進程、應用程序域和上下文小結  528

17.8  小結  528

第18章 CIL和動態程序集的作用  529

18.1  學習CIL語法的原因  529

18.2  CIL指令、特性和操作碼  530

18.2.1  CIL指令的作用  530

18.2.2  CIL特性的作用  530

18.2.3  CIL操作碼的作用  531

18.2.4  區別CIL操作碼和CIL助記符  531

18.3  入棧和出棧:CIL基于棧的本質  532

18.4  正反向工程  533

18.4.1  CIL代碼標簽的作用  536

18.4.2  與CIL交互:修改*.il文件  536

18.4.3  使用ilasm.exe編譯CIL代碼  537

18.4.4  peverify.exe的作用  538

18.5  CIL指令和特性  539

18.5.1  在CIL中指定外部引用程序集  539

18.5.2  在CIL中定義當前程序集  539

18.5.3  在CIL中定義命名空間  540

18.5.4  在CIL中定義類類型  540

18.5.5  在CIL中定義和實現接口  541

18.5.6  在CIL中定義結構  542

18.5.7  在CIL中定義枚舉  542

18.5.8  在CIL中定義泛型  543

18.5.9  編譯CILTypes.il文件  543

18.6  .NET基礎類庫、C#和CIL數據類型的映射  544

18.7  在CIL中定義類型成員  544

18.7.1  在CIL中定義數據字段  545

18.7.2  在CIL中定義類型的構造函數  545

18.7.3  在CIL中定義屬性  546

18.7.4  定義成員參數  546

18.8  剖析CIL操作碼  547

18.8.1  .maxstack指令  548

18.8.2  在CIL中聲明本地變量  549

18.8.3  在CIL中映射參數到本地變量  550

18.8.4  this隱式引用  550

18.8.5  在CIL中使用循環結構  551

18.9  使用CIL構建.NET程序集  551

18.9.1  構建CILCars.dll  551

18.9.2  構建CILCarClient.exe  554

18.10  動態程序集  555

18.10.1  System.Reflection.Emit命名空間  556

18.10.2  System.Reflection.Emit.ILGenerator的作用  557

18.10.3  產生動態的程序集  557

18.10.4  產生程序集和模塊集  559

18.10.5  ModuleBuilder類型的作用  560

18.10.6  產生HelloClass類型和字符串成員變量  561

18.10.7  產生構造函數  561

18.10.8  產生SayHello()方法  562

18.10.9  使用動態產生的程序集  563

18.11  小結  564

第六部分 .NET基礎類庫

第19章 多線程、并行和異步編程  566

19.1  進程、應用程序域、上下文及線程之間的關系  566

19.1.1  并發問題  567

19.1.2  線程同步的作用  568

19.2  .NET委托的簡短回顧  568

19.3  委托的異步性  570

19.3.1  BeginInvoke()和EndInvoke()方法  570

19.3.2  System.IAsyncResult接口  570

19.4  異步調用方法  571

19.4.1  同步調用線程  572

19.4.2  AsyncCallback委托的作用  573

19.4.3  AsyncResult類的作用  575

19.4.4  傳遞和接收自定義狀態數據  575

19.5  System.Threading命名空間  576

19.6  System.Threading.Thread類  577

19.6.1  獲得當前執行線程的統計信息  578

19.6.2  Name屬性  579

19.6.3  Priority屬性  579

19.7  手工創建次線程  580

19.7.1  使用ThreadStart委托  580

19.7.2  使用ParameterizedThreadStart委托  582

19.7.3  AutoResetEvent類  583

19.7.4  前臺線程和后臺線程  584

19.8  并發問題  585

19.8.1  使用C#的lock關鍵字進行同步  588

19.8.2  使用System.Threading.Monitor類型進行同步  589

19.8.3  使用System.Threading.Interlocked類型進行同步  590

19.8.4  使用[Synchronization]特性進行同步  591

19.9  使用TimerCallback編程  592

19.10  CLR線程池  593

19.11  使用任務并行庫進行并行編程  595

19.11.1  任務并行庫API  595

19.11.2  Parallel類的作用  596

19.11.3  使用Parallel類的數據并行  596

19.11.4  在次線程中訪問UI元素  598

19.11.5  Task類  599

19.11.6  處理取消請求  599

19.11.7  使用并行類的任務并行  601

19.12  并行LINQ查詢(PLINQ)  603

19.12.1  使用PLINQ查詢  604

19.12.2  取消PLINQ查詢  604

19.13  .NET 4.5下的異步調用  605

19.13.1  C# async和await關鍵字初探  606

19.13.2  異步方法的命名約定  607

19.13.3  返回void的異步方法  609

19.13.4  具有多個await的異步方法  609

19.13.5  用async/await改進AddWithThreads示例  610

19.14  小結  611

第20章 文件輸入輸出和對象序列化  612

20.1  研究System.IO命名空間  612

20.2  Directory(Info)和File(Info)類型  613

20.3  使用DirectoryInfo類型  614

20.3.1  使用DirectoryInfo類型枚舉出文件  616

20.3.2  使用DirectoryInfo類型創建子目錄  616

20.4  使用Directory類型  617

20.5  使用DriveInfo類類型  618

20.6  使用FileInfo類  619

20.6.1  FileInfo.Create()方法  620

20.6.2  FileInfo.Open()方法  621

20.6.3  FileInfo.OpenRead()和FileInfo.OpenWrite()方法  622

20.6.4  FileInfo.OpenText()方法  622

20.6.5  FileInfo.CreateText()和FileInfo.AppendText()方法  623

20.7  使用File類型  623

20.8  Stream抽象類  625

20.9  使用StreamWriter和StreamReader類型  627

20.9.1  寫文本文件  628

20.9.2  讀文本文件  628

20.9.3  直接創建StreamWriter/StreamReader類型  629

20.10  使用StringWriter和StringReader類型  630

20.11  使用BinaryWriter和BinaryReader  631

20.12  以編程方式“觀察”文件  632

20.13  對象序列化  634

20.14  為序列化配置對象  637

20.14.1  定義可序列化的類型  637

20.14.2  公共字段、私有字段和公共屬性  638

20.15  選擇序列化格式化程序  638

20.15.1  IFormatter和IRemoting-Formatting接口  639

20.15.2  在格式化程序中的類型保真  640

20.16  使用BinaryFormatter序列化對象  641

20.17  使用SoapFormatter序列化對象  642

20.18  使用XmlSerializer序列化對象  643

20.19  序列化對象集合  645

20.20  自定義Soap/Binary序列化過程  647

20.20.1  深入了解對象序列化  647

20.20.2  使用ISerializable自定義序列化  648

20.20.3  使用特性定制序列化  650

20.21  小結  651

第21章 ADO.NET之一:連接層  653

21.1  ADO.NET的宏觀定義  653

21.2  ADO.NET數據提供程序  655

21.2.1  微軟提供的ADO.NET數據提供程序  656

21.2.2  關于System.Data.Oracle-Client.dll  657

21.2.3  選擇第三方的數據提供程序  657

21.3  其他的ADO.NET命名空間  658

21.4  System.Data命名空間的類型  658

21.4.1  IDbConnection接口的作用  659

21.4.2  IDbTransaction接口的作用  659

21.4.3  IDbCommand接口的作用  660

21.4.4  IDbDataParameter和IDataParameter接口的作用  660

21.4.5  IDbDataAdapter和IDataAdapter接口的作用  661

21.4.6  IDataReader和IDataRecord接口的作用  661

21.5  使用接口的抽象數據提供程序  662

21.6  創建AutoLot數據庫  665

21.6.1  創建Inventory表  665

21.6.2  為Inventory表添加測試記錄  667

21.6.3  編寫GetPetName()存儲過程  668

21.6.4  創建Customers和Orders表  669

21.6.5  可視化創建表關系  671

21.7  ADO.NET數據提供程序工廠模型  672

21.7.1  完整的數據提供程序工廠的例子  673

21.7.2  數據提供程序工廠模型的潛在缺陷  675

21.7.3  <connectionStrings>元素  676

21.8  ADO.NET的連接層  677

21.8.1  使用連接對象  678

21.8.2  使用ConnectionStringBuilder對象  679

21.8.3  使用命令對象  680

21.9  使用數據讀取器  681

21.10  構建可重用的數據訪問庫  683

21.10.1  增加連接邏輯  684

21.10.2  增加插入邏輯  685

21.10.3  增加刪除邏輯  686

21.10.4  增加更新邏輯  686

21.10.5  增加選擇邏輯  687

21.10.6  使用參數化的命令對象  688

21.10.7  執行存儲過程  690

21.11  創建控制臺UI前端  691

21.11.1  實現Main()方法  691

21.11.2  實現ShowInstructions()方法  693

21.11.3  實現ListInventory()方法  693

21.11.4  實現DeleteCar()方法  694

21.11.5  實現InsertNewCar()方法  694

21.11.6  實現UpdateCarPetName()方法  695

21.11.7  實現LookUpPetName()  696

21.12  數據庫事務  697

21.12.1  ADO.NET事務對象的主要成員  697

21.12.2  為AutoLot數據庫添加CreditRisks表  698

21.12.3  為InventoryDAL添加事物方法  699

21.12.4  測試數據庫事務  700

21.13  小結  701

第22章 ADO.NET之二:斷開連接層  702

22.1  ADO.NET斷開連接層  702

22.2  DataSet的作用  703

22.2.1  DataSet的主要屬性  704

22.2.2  DataSet的主要方法  704

22.2.3  構建DataSet  705

22.3  使用DataColumn  705

22.3.1  構建DataColumn  706

22.3.2  啟用自增列  707

22.3.3  把DataColumn對象加入DataTable  707

22.4  使用DataRow  707

22.4.1  RowState屬性  709

22.4.2  DataRowVersion屬性  710

22.5  使用DataTable  710

22.5.1  將DataTable插入到DataSet中  711

22.5.2  獲取DataSet中的數據  712

22.5.3  使用DataTableReader對象處理DataTable  713

22.5.4  序列化DataTable/DataSet對象為XML  714

22.5.5  以二進制格式序列化Data-Table/DataSet對象  715

22.6  將DataTable對象綁定到用戶界面  716

22.6.1  從泛型List<T>合成DataTable  717

22.6.2  從DataTable中刪除行  719

22.6.3  根據篩選條件選擇行  720

22.6.4  在DataTable中更新行  722

22.6.5  使用DataView類型  723

22.7  使用數據適配器  724

22.7.1  一個簡單的數據適配器示例  725

22.7.2  映射數據庫名稱為友好名稱  726

22.8  向AutoLotDAL.dll添加斷開連接功能  727

22.8.1  定義初始類類型  727

22.8.2  使用SqlCommandBuilder來配置數據適配器  728

22.8.3  實現GetAllInventory()  729

22.8.4  實現UpdateInventory()  729

22.8.5  設置版本號  729

22.8.6  測試非連接的功能  730

22.9  多表DataSet對象和數據關系  731

22.9.1  建立數據適配器  732

22.9.2  建立表間關系  733

22.9.3  更新Database表  733

22.9.4  在關聯表中切換  734

22.10  Windows Forms數據庫設計器工具  736

22.10.1  可視化設計DataGridView  736

22.10.2  生成的App.config文件  740

22.10.3  強類型的DataSet  740

22.10.4  強類型的DataTable  741

22.10.5  強類型的DataRow  742

22.10.6  強類型的數據適配器  743

22.10.7  完成Windows Forms應用程序  744

22.11  將強類型的數據庫代碼隔離到類庫中  744

22.11.1  查看生成的代碼  746

22.11.2  用生成的代碼選擇數據  747

22.11.3  用生成的代碼插入數據  748

22.11.4  用生成的代碼刪除數據  748

22.11.5  用生成的代碼調用存儲過程  749

22.12  LINQ to DataSet  750

22.12.1  DataSet Extensions庫的作用  751

22.12.2  獲取與LINQ兼容的DataTable  752

22.12.3  DataRowExtensions.Field-<T>()擴展方法的作用  753

22.12.4  從LINQ查詢中生成新的DataTable  754

22.13  小結  754

第23章 ADO.NET之三:Entity Framework  756

23.1  Entity Framework的作用  756

23.1.1  實體的作用  758

23.1.2  Entity Framework的基礎知識  760

23.2  創建和分析EDM  764

23.3  對概念模型進行編程  774

23.4  AutoLotDAL 4.0版,加入實體  779

23.4.1  導航屬性的作用  780

23.4.2  在LINQ to Entity查詢中使用導航屬性  781

23.4.3  調用存儲過程  782

23.5  將數據實體綁定到Windows Forms GUI  783

23.6  展望.NET數據訪問API的未來  786

23.7  小結  787

第24章 LINQ to XML簡介  788

24.1  兩個XML API的故事  788

24.1.1  更優秀的DOM——LINQ to XML  789

24.1.2  更優秀的LINQ to XML——VB字面量語法  790

24.2  System.Xml.Linq命名空間的成員  791

24.2.1  LINQ to XML的軸方法  793

24.2.2  奇妙的XName和XNamespace  794

24.3  使用XElement和XDocument  795

24.3.1  從數組和容器中生成文檔  797

24.3.2  加載和解析XML內容  798

24.4  在內存中操作XML文檔  798

24.4.1  構建LINQ to XML應用程序的UI  799

24.4.2  引入Inventory.xml文件  799

24.4.3  定義LINQ to XML輔助類  800

24.4.4  將UI組裝到輔助類  801

24.5  小結  802

第25章 WCF  803

25.1  各種分布式計算API  803

25.1.1  DCOM的作用  804

25.1.2  COM+/企業服務的作用  804

25.1.3  MSMQ的作用  805

25.1.4  .NET Remoting的作用  805

25.1.5  XML Web服務的作用  806

25.2  WCF的作用  807

25.2.1  WCF特性概覽  807

25.2.2  SOA概覽  808

25.2.3  WCF概要  809

25.3  WCF核心程序集  809

25.4  Visual Studio WCF項目模板  810

25.5  WCF應用程序的基本構成  811

25.6  WCF的ABC  812

25.6.1  WCF契約  813

25.6.2  WCF綁定  814

25.6.3  WCF地址  816

25.7  構建WCF服務  816

25.7.1  [ServiceContract]特性  818

25.7.2  [OperationContract]特性  819

25.7.3  作為操作契約的服務類型  819

25.8  承載WCF服務  820

25.8.1  在App.config文件中創建

ABC  820

25.8.2  針對ServiceHost類型進行編程  821

25.8.3  指定庫地址  821

25.8.4  ServiceHost類型的功能  823

25.8.5  <system.serviceModel>元素的細節  824

25.8.6  啟用元數據交換  825

25.9  構建WCF客戶端應用程序  827

25.9.1  使用svcutil.exe生成代理代碼  827

25.9.2  使用Visual Studio生成代理代碼  828

25.9.3  配置基于TCP的綁定  830

25.10  簡化配置設置  831

25.10.1  使用默認終結點  831

25.10.2  使用多重綁定公開單獨的WCF服務  832

25.10.3  修改WCF綁定的設置  833

25.10.4  使用默認的MEX行為配置  835

25.10.5  刷新客戶端代理和選擇綁定  836

25.11  使用WCF服務庫項目模板  837

25.11.1  構建簡單的Math服務  837

25.11.2  使用WcfTestClient.exe測試WCF服務  838

25.11.3  使用SvcConfigEditor.exe修改配置文件  839

25.12  以Windows服務承載WCF服務  840

25.12.1  在代碼中指定ABC  841

25.12.2  啟用MEX  843

25.12.3  創建Windows服務安裝程序  843

25.12.4  安裝Windows服務  845

25.13  從客戶端異步調用服務  845

25.14  定義WCF數據契約  847

25.14.1  使用Web相關的WCF服務項目模板  848

25.14.2  實現服務契約  849

25.14.3  *.svc文件的作用  851

25.14.4  更新web.config文件  851

25.14.5  測試服務  851

25.15  小結  852

第26章 Windows Workflow Foundation簡介  853

26.1  定義業務流程  853

26.2  構建簡單的工作流  854

26.3  Workflow運行時  857

26.3.1  使用WorkflowInvoker承載工作流  857

26.3.2  使用WorkflowApplication承載工作流  860

26.3.3  第一個工作流示例回顧  861

26.4  檢查Workflow中的活動  861

26.4.1  控制流活動  861

26.4.2  流程圖活動  862

26.4.3  消息傳遞活動  862

26.4.4  狀態機活動  863

26.4.5  運行時活動與基元活動  863

26.4.6  事務活動  863

26.4.7  集合活動和錯誤處理活動  864

26.5  構建流程圖工作流  864

26.5.1  在流程圖中連接活動  865

26.5.2  使用InvokeMethod活動  866

26.5.3  定義工作流變量  867

26.5.4  使用FlowDecision活動  868

26.5.5  使用TerminateWorkflow活動  868

26.5.6  構建“true”條件  869

26.5.7  使用ForEach<T>活動  870

26.5.8  完成應用程序  872

26.5.9  我們做了什么  873

26.6  在專門的DLL中構建Squence工作流  874

26.6.1  定義初始化項目  874

26.6.2  引入程序集和命名空間  876

26.6.3  定義工作流參數  877

26.6.4  定義工作流變量  877

26.6.5  使用Assign活動  878

26.6.6  使用If和Switch活動  879

26.6.7  構建自定義代碼活動  882

26.7  使用工作流庫  884

26.8  小結  886

第七部分 WPF

第27章 WPF和XAML  888

27.1  WPF背后的動機  888

27.1.1  統一多種不同的API  889

27.1.2  通過XAML將關注點分離  889

27.1.3  提供優化的呈現模型  890

27.1.4  簡化復雜的UI編程  890

27.2  各種形式的WPF應用程序  891

27.2.1  傳統的桌面應用程序  891

27.2.2  基于導航的WPF應用程序  892

27.2.3  XBAP應用程序  893

27.2.4  WPF/Silverlight關系  894

27.3  WPF程序集  894

27.3.1  Application類的作用  896

27.3.2  Window類的作用  897

27.4  創建不使用XAML的WPF應用程序  900

27.4.1  創建強類型的Window類  902

27.4.2  創建簡單的用戶界面  902

27.4.3  與應用程序級別的數據交互  904

27.4.4  處理Window對象的關閉  905

27.4.5  攔截鼠標事件  906

27.4.6  攔截鍵盤事件  907

27.5  僅使用XAML構建WPF應用程序  908

27.5.1  用XAML定義窗體對象  909

27.5.2  用XAML定義應用對象  910

27.5.3  通過msbuild.exe處理XAML文件  911

27.6  將標記轉換為.NET程序集  913

27.6.1  將窗口XAML標記映射到C#代碼  913

27.6.2  BAML的作用  914

27.6.3  將應用程序XAML標記映射到C#代碼  915

27.6.4  XAML到程序集的過程摘要  916

27.7  WPF XAML語法  916

27.7.1  Kaxaml  917

27.7.2  XAML XML命名空間和XAML關鍵字  918

27.7.3  控制類和成員變量的可見性  920

27.7.4  XAML元素、XAML特性和類型轉換器  920

27.7.5  XAML屬性元素語法  921

27.7.6  XAML附加屬性  922

27.7.7  XAML標記擴展  923

27.8  使用代碼隱藏文件構建WPF應用程序  924

27.8.1  為MainWindow類添加代碼文件  925

27.8.2  為MyApp類添加代碼文件  925

27.8.3  用msbuild.exe處理代碼文件  926

27.9  使用Visual Studio構建WPF應用程序  927

27.9.1  WPF項目模板  927

27.9.2  工具箱和XAML設計器/編輯器  928

27.9.3  使用Properties窗口設置屬性  929

27.9.4  使用Properties窗口處理事件  930

27.9.5  在XAML編輯器中處理事件  931

27.9.6  Document Outline窗口  932

27.9.7  查看自動生成的代碼文件  933

27.10  使用Visual Studio構建自定義XAML編輯器  933

27.10.1  設計窗口的GUI  934

27.10.2  實現Loaded事件  935

27.10.3  實現按鈕的Click事件  936

27.10.4  實現Closed事件  937

27.10.5  測試應用程序  937

27.10.6  探索WPF 文檔  938

27.11  小結  939

第28章 使用WPF控件編程  941

28.1  WPF核心控件概述  941

28.1.1  WPF Ink控件  942

28.1.2  WPF Document控件  942

28.1.3  WPF公共對話框  942

28.1.4  文檔中的細節  943

28.2  Visual Studio WPF設計器  944

28.2.1  在Visual Studio中使用WPF控件  944

28.2.2  使用Document Outline編輯器  945

28.3  使用面板控制內容布局  946

28.3.1  在Canvas面板中放置內容  948

28.3.2  在WrapPanel面板中放置內容  949

28.3.3  在StackPanel面板中放置內容  951

28.3.4  在Grid面板中放置內容  952

28.3.5  在DockPanel面板中放置內容  954

28.3.6  啟用Panel類型的滾動功能  955

28.3.7  使用Visual Studio設計器配置Panel  956

28.4  使用嵌套面板構建窗口框架  959

28.4.1  構建菜單系統  960

28.4.2  構建工具條  962

28.4.3  構建狀態條  963

28.4.4  完成UI設計  963

28.4.5  實現MouseEnter/MouseLeave事件處理程序  964

28.4.6  實現拼寫檢查邏輯  964

28.5  WPF命令  965

28.5.1  內置的命令對象  965

28.5.2  將命令連接到Command屬性  966

28.5.3  將命令連接到任意行為  967

28.5.4  使用Open和Save命令  968

28.6  深入了解WPF API和控件  970

28.7  構建Ink API選項卡  972

28.7.1  設計工具條  973

28.7.2  RadioButton控件  975

28.7.3  處理Ink API選項卡的事件  977

28.7.4  InkCanvas控件  977

28.7.5  ComboBox控件  980

28.7.6  保存、加載和清除InkCanvas數據  981

28.8  Documents API  982

28.8.1  塊元素和內聯元素  982

28.8.2  文檔布局管理器  982

28.9  構建Documents選項卡  983

28.9.1  使用代碼填充FlowDocument  984

28.9.2  啟用批注和便簽  985

28.9.3  保存和加載流文檔  986

28.10  WPF數據綁定模型  987

28.10.1  構建Data Binding選項卡  988

28.10.2  使用Visual Studio建立數據綁定  988

28.10.3  DataContext屬性  990

28.10.4  使用IValueConverter進行數據轉換  991

28.10.5  在代碼中建立數據綁定  992

28.10.6  構建DataGrid選項卡  992

28.11  小結  994

第29章 WPF圖形呈現服務  995

29.1  理解WPF的圖形呈現服務  995

29.2  使用形狀呈現圖形數據  996

29.2.1  在畫布中添加矩形、橢圓形和線條  998

29.2.2  在畫布中移除矩形、圓形和線條  1001

29.2.3  折線和多邊形  1002

29.2.4  路徑  1002

29.3  WPF畫刷和畫筆  1005

29.3.1  使用Visual Studio配置畫刷  1006

29.3.2  在代碼中配置畫刷  1008

29.3.3  配置畫筆  1009

29.4  圖形變換  1009

29.4.1  變換概覽  1010

29.4.2  變換Canvas數據  1011

29.5  使用Visual Studio變換編輯器  1012

29.5.1  構建初始布局  1012

29.5.2  在設計時應用變換  1014

29.5.3  在代碼中變換畫布  1015

29.6  使用繪圖和幾何圖形呈現圖形數據  1015

29.6.1  使用幾何圖形構建DrawingBrush  1017

29.6.2  用DrawingBrush進行繪畫  1017

29.6.3  在DrawingImage中使用繪圖類型  1018

29.7  Expression Design的作用  1019

29.7.1  將示例設計文件導出為XAML  1019

29.7.2  將圖像數據導入WPF對象  1021

29.7.3  與熊共舞  1022

29.8  使用可視化層呈現圖形數據  1022

29.9  小結  1028

第30章 WPF資源、動畫和樣式  1029

30.1  理解WPF資源系統  1029

30.2  使用對象(邏輯)資源  1034

30.2.1  Resources屬性的作用  1034

30.2.2  定義窗口級別的資源  1035

30.2.3  {StaticResource}標記擴展  1037

30.2.4  {DynamicResource}標記擴展  1037

30.2.5  應用程序級別的資源  1038

30.2.6  定義合并的資源字典  1039

30.2.7  定義只含資源的程序集  1041

30.3  理解WPF動畫服務  1042

30.3.1  動畫類型的作用  1043

30.3.2  To、From和By屬性  1043

30.3.3  Timeline基類的作用  1044

30.3.4  用C#代碼創建動畫  1044

30.3.5  控制動畫的速度  1045

30.3.6  動畫的反轉和循環  1046

30.4  用XAML創建動畫  1047

30.4.1  演示圖板的作用  1047

30.4.2  事件觸發器的作用  1048

30.4.3  使用不連續的關鍵幀創建動畫  1048

30.5  WPF樣式的作用  1049

30.5.1  定義并使用樣式  1050

30.5.2  重寫樣式設置  1050

30.5.3  使用TargetType自動應用樣式  1051

30.5.4  繼承已有的樣式  1052

30.5.5  未命名樣式的作用  1052

30.5.6  使用觸發器定義樣式  1053

30.5.7  使用多個觸發器定義樣式  1053

30.5.8  動畫樣式  1054

30.5.9  以編程方式設置樣式  1054

30.6  小結  1056

第31章 依賴屬性、路由事件和模板  1057

31.1  依賴屬性的作用  1057

31.1.1  已知的依賴屬性  1059

31.1.2  CLR屬性包裝器的重要說明  1061

31.2  構建自定義依賴屬性  1061

31.2.1  添加數據驗證例程  1065

31.2.2  響應屬性的改變  1065

31.3  路由事件  1066

31.3.1  路由冒泡事件的作用  1067

31.3.2  繼續或中止冒泡  1068

31.3.3  路由隧道事件的作用  1068

31.4  邏輯樹、可視樹和默認模板  1070

31.4.1  以編程方式查看邏輯樹  1070

31.4.2  以編程方式查看可視樹  1072

31.4.3  以編程方式查看控件的默認模板  1073

31.5  使用觸發器框架構建自定義控件模板  1075

31.5.1  模板資源  1076

31.5.2  使用觸發器添加可視提示  1078

31.5.3  {TemplateBinding}標記擴展的作用  1079

31.5.4  ContentPresenter的作用  1080

31.5.5  融合模板和樣式  1081

31.6  小結  1082

第八部分 ASP.NET Web Form

第32章  ASP.NET Web Form   1084

32.1  HTTP的作用  1084

32.1.1  HTTP請求/響應循環  1084

32.1.2  HTTP是無狀態協議  1085

32.2  Web應用程序和Web服務器  1085

32.2.1  IIS虛擬目錄的作用  1085

32.2.2  ASP.NET Development Web Server  1086

32.3  HTML的作用  1087

32.3.1  HTML文檔結構  1087

32.3.2  HTML表單的作用  1088

32.3.3  Visual Studio HTML設計器工具  1088

32.3.4  構建HTML表單  1090

32.4  客戶端腳本的作用  1091

32.5  回發到Web服務器  1093

32.6  ASP.NET API概覽  1094

32.6.1  ASP.NET 2.0及其后續版本的主要特性  1095

32.6.2  ASP.NET 3.5(和.NET 3.5 SP1)的主要特性  1096

32.6.3  ASP.NET 4.0和4.5的主要特性  1096

32.7  構建單個文件的ASP.NET網頁  1097

32.7.1  引用AutoLotDAL.dll  1098

32.7.2  設計UI  1098

32.7.3  添加數據訪問邏輯  1099

32.7.4  ASP.NET指令的作用  1101

32.7.5  腳本塊  1102

32.7.6  ASP.NET控件聲明  1103

32.8  使用代碼文件構建ASP.NET Web頁面  1104

32.8.1  引用AutoLotDAL.dll程序集  1106

32.8.2  更新代碼文件  1107

32.8.3  調試并跟蹤ASP.NET頁面  1107

32.9  ASP.NET Web Site和ASP.NET Web Application  1108

32.10  ASP.NET網站目錄結構  1110

32.10.1  引用程序集  1110

32.10.2  App_Code文件夾的作用  1111

32.11  頁面類型的繼承鏈  1111

32.12  與傳入的HTTP請求交互  1113

32.12.1  獲得瀏覽器統計數據  1113

32.12.2  訪問傳入的表單數據  1114

32.12.3  IsPostBack屬性  1115

32.13  與輸出HTTP響應交互  1115

32.13.1  提交HTML內容  1116

32.13.2  重定向用戶  1116

32.14  ASP.NET網頁的生命周期  1117

32.14.1  AutoEventWireUp特性的作用  1118

32.14.2  Error事件  1118

32.15  web.config文件的作用  1120

32.16  小結  1121

第33章  ASP.NET Web控件、母版頁和主題  1122

33.1  Web控件的本質  1122

33.1.1  服務器端事件處理  1123

33.1.2  AutoPostBack屬性  1123

33.2  Control和WebControl基類  1124

33.2.1  枚舉所包含的控件  1125

33.2.2  動態添加和刪除控件  1127

33.2.3  與動態創建的控件交互  1128

33.2.4  WebControl基類的功能  1128

33.3  ASP.NET Web控件的類別  1129

33.3.1  關于System.Web.UI.HtmlControls的簡短說明  1131

33.3.2  Web控件的文檔  1132

33.4  構建ASP.NET汽車網站  1132

33.4.1  使用ASP.NET母版頁工作  1133

33.4.2  定義默認的內容頁面  1138

33.4.3  設計Inventory內容頁面  1140

33.4.4  設計Build-a-Car內容頁面  1143

33.5  驗證控件的作用  1146

33.5.1  開啟客戶端JavaScript驗證支持  1147

33.5.2  RequiredFieldValidator  1148

33.5.3  RegularExpressionValidator  1148

33.5.4  RangeValidator  1148

33.5.5  CompareValidator  1149

33.5.6  創建ValidationSummary  1150

33.5.7  定義驗證分組  1151

33.6  使用主題  1152

33.6.1  *.skin文件  1153

33.6.2  應用網站級別的主題  1155

33.6.3  在頁面級別應用主題  1155

33.6.4  SkinID屬性  1155

33.6.5  以編程方式分配主題  1156

33.7  小結  1157

第34章 ASP.NET狀態管理技術  1158

34.1  狀態問題  1158

34.2  ASP.NET狀態管理技術  1160

34.3  ASP.NET視圖狀態的作用  1160

34.3.1  演示視圖狀態  1161

34.3.2  添加自定義視圖狀態數據  1162

34.4  Global.asax文件的作用  1163

34.4.1  全局最后異常事件處理程序  1164

34.4.2  HttpApplication基類  1165

34.5  應用程序狀態與會話狀態的差別  1165

34.5.1  維護應用程序級的狀態數據  1166

34.5.2  修改應用程序數據  1168

34.5.3  處理Web應用程序的關閉  1169

34.6  使用應用程序緩存  1169

34.6.1  使用數據緩存  1170

34.6.2  修改*.aspx文件  1172

34.7  維護會話數據  1174

34.8  cookie  1177

34.8.1  創建cookie  1177

34.8.2  讀取傳入的cookie數據  1178

34.9  <sessionState>元素的作用  1179

34.9.1  在ASP.NET會話狀態服務器中保存會話數據  1179

34.9.2  把會話數據保存在專門的數據庫中  1180

34.10  ASP.NET用戶配置API  1181

34.10.1  ASPNETDB.mdf數據庫  1181

34.10.2  在web.config中定義用戶配置  1182

34.10.3  以編程方式訪問用戶配置數據  1183

34.10.4  分組用戶配置數據并且持久化自定義對象  1185

34.11  小結  1186

索引  1187

精通C#(中文版)內容簡介

本書是C# 領域久負盛名的經典著作,深入全面地講解了C# 編程語言和.NET 平臺的核心內容,并結合大量示例剖析相關概念。全書分為八部分:C# 和.NET 平臺、C# 核心編程結構、C# 面向對象編程、高級C# 編程結構、用.NET 程序集編程、.NET 基礎類庫、WPF 和ASP.NET Web Forms。第6 版是對第5 版的進一步更新和完善,內容涵蓋了最先進的.NET 編程技術和技巧,并準確呈現出C# 編程語言的最新變化和.NET 4.5 Framework 的新特性。

本書由微軟C# MVP Andrew Troelsen 編寫,第6 版專門針對C# 5.0 和.NET 4.5 進行了細致入微的修訂,是各層次.NET 開發人員的必讀之作。

精通C#(中文版)內容截圖

PC官方
安卓官方手機版
IOS官方手機版

精通C#(中文版)截圖

下載地址

精通C#(中文版) 完整免費版【共1201頁】

熱門評論
最新評論
昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字數: 0/500 (您的評論需要經過審核才能顯示)

編輯推薦

報錯

請簡要描述您遇到的錯誤,我們將盡快予以修正。

轉帖到論壇
輪壇轉帖HTML方式

輪壇轉帖UBB方式

主站蜘蛛池模板: 在线中文字幕日韩 | 国产超级乱淫视频播放 | 99在线观看精品视频 | 第一区免费在线观看 | 亚洲欧美日韩一区高清中文字幕 | 精品免费国产一区二区三区 | 亚洲精国产一区二区三区 | 日本一区二区三区免费在线观看 | 亚洲乱码尤物193yw在线播放 | 日本三级黄 | 日韩国产三级 | 午夜视频网站 | 麻豆精品国产免费观看 | 一区二区三区四区在线观看视频 | 男女视频在线观看网站 | 人人公开免费超级碰碰碰视频 | 干欧美女人 | 中文字幕s级优女区 | 国产成人精品久久一区二区三区 | 求欧美精品网址 | 最近最新的日本免费 | 欧美性video精品 | 亚洲性免费 | 欧美黄色一级片免费看 | 午夜大片网 | 欧美xxxxxxxx| 日本精品视频一区二区 | 亚洲精品午夜aaa级久久久久 | 免费国产精品视频 | 色综合天天综合中文网 | 91妖精视频 | 日韩娇小性hd | 久中文字幕中文字幕亚洲无线 | 第一页在线 | 在线视频一本 | 美女一级牲交毛片视频 | 午夜视频福利在线 | 在线观看成人免费 | 国产成人宗合 | 福利在线免费观看 | 男女生性毛片免费观看 |