第一部分 C#语言 2
第1章 运算符、表达式和控制结构 2
1.1 理解Visual C#.NET编程布局 2
1.2解析命令行参数 3
1.3创建多个应用程序入口点 4
1.4引用程序集和名称空间 5
1.5创建合法的标识符名称 6
1.6使用数值类型 6
1.7使用浮点数 8
1.8使用struct创建数据类型 9
1.9数据类型转换 12
1.10进行关系运算 13
1.11使用逻辑表达式 14
1.12确定运算符优先级和结合性 16
1.13 使用if语句 17
1.14使用循环控制结构 18
1.15打断循环控制体 20
第2章 对象和组件 22
2.1 创建类 22
2.2定义类字段 24
2.3构造类的方法 25
2.4实例化和使用对象 27
2.5重载运算符 29
2.6重载类构造函数 31
2.7构造类的属性 32
2.8从其他类继承 34
2.9防止对象继承 36
2.10对象的字符串表示 36
2.11 抽象类和接口 37
2.12使用接口进行多重继承 40
2.13创建和使用类库 42
第3章 字符串和正则表达式 44
3.1创建和使用字符串对象 44
3.2格式化字符串 46
3.3访问单独的字符串字符 49
3.4分析字符特性 50
3.5大小写敏感的字符串比较 54
3.6使用子字符串 55
3.7使用原义字符串(Verbatim String)语法 57
3.8在常量和可变字符串之间选择 57
3.9优化StringBuilder性能 59
3.10了解基本的正则表达式语法 60
3.11 使用正则表达式来验证用户输入 62
3.12使用正则表达式来替换子字符串 63
3.13创建正则表达式库 66
4.1 声明和使用数组 68
第4章 创建和使用.NET集合 68
4.2定义锯齿状的(jagged)数组 70
4.3使用foreach运算符来枚举数组 70
4.4确定foreach循环中当前元素的下标 71
4.5使用ArrayList 72
4.6在Array和ArrayList之间选择 74
4.7使用栈和队列 75
4.8使用Hashtable 79
4.9使用BitArray 81
4.10使用IEnumerator来枚举集合 83
4.11对集合排序 85
4.12对数组进行二分搜索 87
4.13创建新的集合类型 91
4.14创建索引器 96
第5章 委托和事件 99
5.1 定义和使用委托 99
5.2组合委托以形成多点传送委托 102
5.3从多点传送委托中删除单个委托 104
5.4访问多点传送委托中的委托名称 105
5.5异步调用委托 106
5.6多点传送委托的返回值 109
5.7声明事件 111
5.8定义和注册事件处理程序 114
5.9包装事件参数 115
6.1 使用try/catch块 117
第6章 异常和错误处理 117
6.2使用finally块 119
6.3显示异常信息 120
6.4创建和抛出自定义的异常 123
6.5访问内部异常 124
6.6使用checked和unchecked来检测溢出 127
第二部分用户界面和图形 132
第7章 Windows Form 132
7.1创建基于对话框的Windows Form 132
7.2更改窗体的属性 134
7.4显示消息框 135
7.3创建模式对话框 135
7.5处理窗体事件 137
7.6设计初始Windows Form 140
7.7更改Windows Form图标 141
7.8将自定义数据赋值给Windows Form 142
7.9更改窗体的不透明度 143
7.10支持拖放操作 145
7.11创建MDI窗体 147
7.12 访问MDI子窗口 148
7.13排列MDI子窗体 150
8.1 使用Label控件显示文本 152
第8章 Windows Form控件 152
8.2更改控件的属性 153
8.3创建按钮和处理事件 154
8.4显示打开文件对话框 156
8.5创建菜单并将其附加到Windows Form 157
8.6创建上下文菜单 157
8.7显示系统托盘图标(Tray Icon) 158
8.8使用LinkLabel控件打开Web页面 159
8.9确定复选框状态 160
8.10创建单选按钮组 160
8.11确定选中的单选按钮 161
8.12添加和删除ListBox控件中的项 162
8.13使用ListView控件 165
8.14在ListView控件中使用ImageList 166
8.15更改ListView模式 167
8.16创建ListView列 168
8.17使用TreeNode编辑器 169
8.18通过编程向TreeView控件添加项 170
8.19在TreeView中使用图像 171
8.20使用PathSeparator属性选定项 171
8.21创建ToolBar 172
8.22捕捉ToolBar按钮单击事件 173
8.23添加StatusBar面板来显示应用程序状态 176
8.25控件锚定 177
8.24向控件添加Tooltip 177
8.26停靠控件 178
8.27实现控件验证 181
8.28可视化继承 183
第9章 用户控件 184
9.1扩展常用控件 184
9.2创建复合控件 187
9.3创建自定义的控件 188
9.4使用Design-Time特性 191
9.5更改控件的工具箱图标 193
9.6使用程序向工具箱添加控件 194
9.7创建扩展提供者(extender provider)控件 195
9.8创建UI类型编辑器 197
9.9利用自定义的设计器 199
9.10扩展设计时的上下文菜单 201
9.11使用元数据过滤删除控件属性 202
第10章 使用GDI+编写图形程序 205
10.1获得Graphics对象 205
10.2绘制矩形 206
10.3 使用阴影线刷子绘制矩形 207
10.4使用纹理刷子填充矩形 209
10.5使用渐变填充 210
10.6绘制连通的线和多边形 211
10.7绘制弧形和饼形 213
10.8使用旋转和平移变形 214
10.9使用图形容器 214
10.10强制重新绘制 215
10.11实现无闪烁动画 216
10.12枚举系统字体 217
10.13显示文本 218
10.14启用抗锯齿(Antialiasing)功能 218
10.15加载并显示图像 219
10.16加载并显示动画GIF的文件格式 222
10.17转换图像文件格式 223
10.18打印文档 224
10.19显示打印预览对话框 227
第11章 本地化和资源 229
11.1确定用户的文化信息 229
11.2本地化Windows Form控件 230
11.3通过编程更改当前文化 231
11.4枚举文化类型 232
11.5对不支持的区域使用后备资源 233
11.6根据文化正确地设置数字的格式 234
11.7显示文化相关的日期和时间 235
11.8根据具体的文化格式化货币 235
11.9创建和使用附属程序集 236
11.10使用ResourceReader显示图像资源 238
11.11使用ResourceWriter类保存资源信息 239
第三部 分数据访问 244
第12章 文件I/O和串行化 244
12.1创建新文件 244
12.2验证文件的存在 246
12.3打开一个文件以便使用文件类进行阅读 246
12.4使用FileInfo类来显示文件信息 248
12.5复制和移动文件 249
12.6使文件变成只读的 250
12.7写入文件 251
12.8从文件中读取 253
12.9向现有文件附加数据 256
12.10使用MemoryStream提高性能 258
12.11监控文件和目录更改 260
12.12创建目录 264
12.13检索目录信息 265
12.14列举目录中的文件和子目录 266
12.15使用串行化保存对象状态 267
12.16使用逆串行化重新创建对象 270
12.17防止对象项被串行化 271
12.18自定义串行化过程 272
13.1使用XmlTextReader读取XML文档 274
第13章 .NET中的XML 274
13.2使用XmlNodeReader进行读取 279
13.3使用XPath浏览XML文档 282
13.4使用XmlConvert来转换XML数据类型 284
13.5使用模式验证XML文档 285
13.6用程序生成XML文档 287
13.7控制XmlTextWriter格式 288
13.8使用XML名称空间 289
13.9使用XSLT转换XML文档 291
14.1创建数据库连接 293
第14章 使用ADO.NET进行数据库程序设计 293
14.2创建并填充DataSet 294
14.3根据无类型的DataSet生成XML模式 296
14.4使用SqlDataReader阅读数据库记录 297
14.5使用Data Form Wizard创建窗体 298
14.6使用命令和存储过程 299
14.7显示DataGrid 301
14.8数据绑定Windows Form控件 303
14.9使用CommandBuilder自动生成命令 306
14.10为一个表创建不同的DataView 308
14.11向DataSet添加新表 312
14.12创建惟一性约束 313
14.13创建ForeignKey约束 314
14.14向DataTable插入新行 317
14.15修改DataTable中的行 320
14.16使用DataRelation来导航表 321
14.17将DataSet信息保存到XML文件 322
14.18从XML文件中恢复DataSet 325
14.19合并DataSet 326
14.20修改SQL服务器连接的连接池行为 327
14.21使用事务确保数据的完整性 329
第四部分 Internet和网络 332
第15章 使用Socket进行网络编程 332
15.1创建一个基于流的服务器 332
15.2确定连接客户端的信息 336
15.3使用DNS解析IP地址或主机名 338
15.4创建基于流的客户端 339
15.5创建基于UDP的无连接服务器 341
15.6创建基于UDP的无连接客户端 344
15.7控制Socket的延迟行为 347
15.8使用WebRequest类进行HTTP通信 348
15.9通过代理服务器请求Web文档 349
15.10创建异步Web请求 350
第16章 创建ASP.NET应用程序 353
16.1创建简单的Web Form 353
16.2显示服务器端控件 354
16.3处理Web控件事件 355
16.4从Web控件事件中强制产生回送 360
16.5使用户重定向到不同的Web页面 361
16.6验证输入数据并显示错误信息 361
16.7数据绑定Web控件 364
16.8使用DataList Web控件 366
16.9使用DataGrid控件 370
16.10改变DataGrid的样式信息 371
16.11创建可编辑的DataGrid 372
16.12管理应用程序和会话状态 373
16.13创建自定义Web控件 376
16.14使用页面输出缓存 379
16.15读写Cookie 380
第17章 ASP.NET Web服务 382
17.1 创建ASP.NET Web服务 382
17.2添加Web服务方法 384
17.3提供Web方法描述 385
17.4为Web方法设置别名 388
17.5管理Web服务状态 388
17.6发布和注册ASP.NET Web服务 390
17.7在Windows Form应用程序中使用Web服务 391
17.8在ASP.NET应用程序中使用Web服务 393
17.9异步调用Web方法 394
17.10在Web服务中使用事务 395
第18章 .NETRemoting 397
18.1创建远程对象 397
18.2为远程类型创建托管(host)应用程序 398
18.3从客户端应用程序调用远程对象 399
18.4执行远程对象的客户端激活 400
18.5创建服务器端激活的单态(singleton)对象 400
18.6使用远程配置文件 401
18.7使用IIS托管远程类型 402
18.8使用通道和格式化程序 403
18.9控制租用生存期(Lifetime Leases) 404
18.11创建代理以截获消息 405
18.10执行异步远程调用 405
18.12创建自定义通道接收器以记录日志 409
第五部分 部署与安全 416
第19章 程序集 416
19.1 设置程序集的信息特性 416
19.2设置程序集版本 417
19.3使用ILDasm查看程序集内容 417
19.4创建多文件程序集 420
19.5创建强名称(Strong Name)程序集 421
19.6延迟签名程序集 422
19.7创建共享程序集 423
19.8保护附属程序集 424
19.9以编程方式显式地加载程序集 425
19.10以编程方式读取程序集标识 427
19.11确定加载程序集的文件或URL 428
19.12将程序集加载到新应用域 429
第20章 项目的安装与部署 431
20.1创建基于setup.exe的安装程序 431
20.2不使用向导创建Windows安装项目 434
20.3在用户桌面上添加快捷方式 435
20.4定制安装对话框的外观 436
20.5添加用户界面对话框 437
20.6设置安装的启动条件 438
20.7有条件地安装文件 439
20.8创建自定义的可执行行为 441
20.9作为一个类创建自定义行为 443
20.10将程序集安装到全局程序集缓存 445
第21章 保护代码 447
21.1使用声明式安全性为程序集请求权限 447
21.2使用声明式安全性为类或方法请求权限 450
21.3使用强制式安全性请求权限 451
21.4查看安全策略信息 452
21.5创建代码组 455
21.6创建新权限集 457
21.7确定当前用户是不是管理员 458
21.8使用Web Forms身份验证创建登录页面 459
21.9使用指针的不安全代码 461
21.10使用PInvoke调用本地非托管代码 462
第六部分 高级主题 466
第22章 线程和同步 466
22.1创建和启动线程 466
22.2暂停和恢复线程 468
22.3终止线程的执行 469
22.4改变运行中的线程的优先级 470
22.5使用ThreadPool来执行后台任务 471
22.6创建应用程序定时器 473
22.7使用Monitor来同步变量的访问 475
22.8使用事件来同步线程 477
22.9使用Mutex同步多个对象并避免死锁 479
22.10使用Mutex实现进行间通信 480
22.11使用读锁/写锁同步对资源的访问 481
22.12使用线程本地存储来获取和设置线程数据 482
第23章 反射 485
23.1查看程序集信息 485
23.2检查模块信息 486
23.3检查构造函数信息 487
23.4检查type中的方法 488
23.5显示事件信息 489
23.6显示属性信息 490
23.7使用筛选器搜索程序集信息 491
23.8用自定义的搜索技术来搜索程序集 492
23.9创建动态程序集 495
23.10进行动态调用 500
23.11创建插件体系结构 502
第24章 COM互操作性 509
24.1 创建基于ATL的COM组件 509
24.2在.NET中使用COM对象 512
24.3自动生成Interop程序集 514
24.4在Windows窗体中使用ActiveX控件 514
24.5使用ILDasm.exe查看RCW 515
24.6处理HRESULT错误 516
24.7在COM中使用.NET对象 517
24.8查看导出的.NET类型库 521
24.9控制托管线程单元(apartment)状态 522
第25章 自定义特性 524
25.1创建自定义特性的类定义 524
25.2为自定义特性声明目标 526
25.3允许多次应用自定义特性 527
25.4定义自定义特性的继承模式 528
25.5向自定义特性添加可选属性 529
25.6使用反射显示自定义特性的信息 531
25.8在运行时显示应用特性的属性 533
25.7使用反射显示程序集的自定义特性信息 533
第26章 智能设备扩展 536
26.1理解Compact Framework和.NET Framework之间的区别 536
26.2创建智能设备解决方案 537
26.3创建并显示Windows Form 538
26.4操纵软输入面板 539
26.5使用MessageWindow类 540
26.6创建IrDA客户端 546
26.7创建IrDA服务器 549
26.8为应用程序的发布创建CAB文件 552
26.9使用ActiveSync部署移动应用程序 553
26.10创建移动ASP.NET页面 554
26.11使用Mobile ASP.NET的ObjectList控件 556
26.12查询移动设备的能力 558
26.13使用DeviceSpecific控件更改Mobile Web Form的输出 559
26.14创建SqlServerCE数据库 560
26.15使用SQL Server CE数据库 561
附录A Visual Studio.NET IDE 564
A.1源代码编辑 564
A.2工具窗口 565
A.3 Visual Studio.NET工具栏 567
附录B.NET调试参考 568
B.1 使用断点 568
B.2调试应用程序 568