目录 1
译者序 1
作者简介 1
致谢 1
前言 1
第1章 .NET概述 1
1.1 什么是.NET 1
1.2 关键技术概述 2
1.2.1 IL和通用语言规范 3
1.2.2 通用语言运行时 4
1.2.3 基本类库 5
1.2.4 ASP.NET 6
1.2.5 Windows窗体 7
1.2.6 XML 7
1.2.7 C 9
1.3 .NET体系的工作原理 10
1.3.1 IL和元数据 10
1.3.2 JIT编译 11
1.3.3 托管代码和垃圾回收 12
1.3.4 名字空间 13
1.3.5 assembly 14
1.3.6 应用程序域 16
1.4 .NET对Visual C++的影响 17
1.4.1 Visual C++ 17
1.4.2 Visual Basic 18
1.5 C#的出现 19
1.6 关于COM 21
第2章 .NET编程模型 22
2.1 深入讨论 22
2.1.1 OO编程介绍 23
2.1.2 类 31
2.1.3 引用和值类型 33
2.1.4 结构 35
2.1.5 继承 37
2.1.6 接口 37
2.1.7 委派 38
2.1.8 事件 39
2.1.9 元数据和attribute 40
2.1.10 异常 40
2.1.11 反射和Type类 44
2.2 快速解决方案 46
2.2.1 创建类 46
2.2.2 重载和覆盖方法 46
2.2.3 实现类的域和方法 46
2.2.4 创建结构 47
2.2.5 VB中对象的构造和析构 48
2.2.6 清理.NET对象 49
2.2.7 使用继承 50
2.2.8 覆盖方法 50
2.2.9 创建抽象类 51
2.2.10 创建隐藏的类和方法 52
2.2.11 创建属性 52
2.2.12 创建接口 53
2.2.13 实现接口 54
2.2.14 通过接口使用对象 55
2.2.15 创建和使用委派 57
2.2.16 创建和使用事件 61
2.2.17 将attribute附接到类和成员中 67
2.2.18 创建自定义attribute 68
2.2.19 查询attribute 71
2.2.20 捕获异常 73
2.2.21 产生异常 74
2.2.22 获取表示类型的Type对象 75
2.2.23 找到类型 75
2.2.24 动态创建对象 77
第3章 System名字空间 79
3.1 深入讨论 79
3.1.1 基本类型 80
3.1.2 Object类 83
3.1.4 其他类型 87
3.1.3 数组 87
3.1.5 Enum 88
3.1.6 异常 89
3.1.7 Console类 90
3.1.8 Math类 91
3.1.9 Type类 92
3.1.10 其他类 92
3.2 快速解决方案 92
3.2.1 访问System名字空间中定义的类 92
3.2.3 创建一个新的值类型 93
3.2.2 语言类型和System中定义类型之间的关系 93
3.2.4 测试两个对象是否相同 98
3.2.5 实现类的浅拷贝和深拷贝 99
3.2.6 实现类的ToString() 101
3.2.7 处理Visual Basic中的零基底数组 103
3.2.8 使用.NET数组 103
3.2.9 操作字符串 107
3.2.10 表示和使用日期和时间 110
3.2.12 获取所发生的异常及其位置 114
3.2.11 声明和使用枚举类型 114
3.2.13 使用内部异常 115
3.2.14 Console.WriteLine()和Console.Out.WriteLine()的区别 116
3.2.15 产生格式化输出 117
3.2.16 生成随机数 119
第4章 System.Collections名字空间 121
4.1 深入讨论 121
4.1.1 System.Collections接口 122
4.1.2 ArrayList 125
4.1.3 BitArray 125
4.1.4 Hashtable 126
4.1.5 NameValueCollection 127
4.1.6 Queue 127
4.1.7 SortedList 127
4.1.8 Stack 128
4.1.9 StringCollection和StringDictionary 129
4.2 快速解决方案 129
4.2.1 使用哪个Collection 129
4.2.2 哪个Collection是线程安全的 129
4.2.3 检索集合 130
4.2.4 使用ArrayList 131
4.2.5 根据关键字存储数据 135
4.2.6 以接收的顺序访问数据项 140
4.2.7 使用Stack 141
4.2.8 在BitArray中存储标记 141
4.2.9 在StringCollection中存储字符串 143
4.2.10 在NameValueCollection中根据键值存储字符串 144
4.2.11 实现自定义排序 145
4.2.12 创建自己的Collection 147
5.1 深入讨论 151
5.1.1 XML概述 151
第5章 XML名字空间 151
5.1.2 System.Xml名字空间 158
5.1.3 XmlTextReader 158
5.1.4 XmlValidatingReader 160
5.1.5 XmlTextWriter 160
5.1.6 XmlDocument 161
5.1.7 XSL和XPath 165
5.1.8 XpathNavigator 165
5.2.2 使用XmlTextReader解析XML文档 167
5.2.1 使用哪个XML类 167
5.2 快速解决方案 167
5.2.3 使用Validation解析文档 172
5.2.4 使用XmlTextWriter编写XML文档 174
5.2.5 使用XPathNavigator 178
5.2.6 使用XmlDocument创建和使用DOM树 181
5.2.7 使用XPath 187
5.2.8 使用XslTransform转换XML 189
第6章 I/O和网络名字空间 192
6.2 深入讨论 192
6.1.1 流 192
6.1.2 使用Reader和Writer的文本I/O 197
6.1.3 文件和目录 200
6.1.4 System.Net名字空间 206
6.1.5 System.Net.Sockets名字空间 208
6.2 快速解决方案 210
6.2.1 使用流的二进制I/O 210
6.2.2 读写文本文件 213
6.2.3 处理硬盘上的文件和目录 216
6.2.4 监控文件和目录的改动 223
6.2.5 使用Socket 227
7.1.1 .NET安全模型 232
7.1 深入讨论 232
第7章 .NET安全 232
7.1.2 安全策略 235
7.1.3 代码中的许可 240
7.1.4 CodeAccessPermission类 241
7.2 快速解决方案 247
7.2.1 使用强名称对assembly签名 247
7.2.2 请求对资源的访问 248
7.2.3 限制组件对文件和目录的访问 249
7.2.4 确保只有指定的用户可以执行方法中的代码 251
8.1.1 ASP.NET简介 255
第8章 System.Web名字空间 255
8.1 深入讨论 255
8.1.2 Web窗体 261
8.1.3 Web控件 265
8.1.4 XML Web服务 268
8.2 快速解决方案 279
8.2.1 创建一个Web窗体 279
8.2.2 在Web窗体加入Web控件 280
8.2.3 生成Web控件事件处理代码 281
8.2.4 检测在Page_Load事件中的回传 282
8.2.5 延迟的Web控件事件处理 283
8.2.6 使用DataGrid Web控件 286
8.2.7 使用确认Web控件 287
8.2.8 在Web服务器的session中缓存数据 289
8.2.9 测试和调试Web窗体 290
8.2.10 创建一个XML Web服务 292
8.2.11 研究XML Web服务发现和WSDL服务发现 295
8.2.12 在应用程序中访问XML Web服务 298
8.2.13 测试和调试XML Web服务 299
9.1.1 窗体和控件 301
第9章 Windows窗体 301
9.1 深入讨论 301
9.1.2 Windows窗体应用程序剖析 302
9.1.3 Form类 305
9.1.4 Application类 314
9.1.5 可视化继承 315
9.1.6 常用对话框 316
9.2 快速解决方案 317
9.2.1 创建一个Windows窗体应用程序 317
9.2.2 创建一个新的窗体并显示它 321
9.2.3 创建MDI窗体 322
9.2.4 创建和使用对话框 323
9.2.5 显示消息框 324
9.2.6 在窗体中使用菜单 325
9.2.7 将上下文菜单和窗体联系在一起 328
9.2.8 显示文件打开和关闭对话框 329
9.2.9 在一个已定义窗体的基础上创建窗体 331
9.2.10 在窗体上使用分离器 332
10.1.1 窗体和控件 334
10.1 深入讨论 334
第10章 Windows窗体和控件 334
10.1.2 Cortrol类 335
10.1.3 使用控件 339
10.2 快速解决方案 368
10.2.1 在窗体中放置控件 368
10.2.2 设置控件的标签顺序 370
10.2.3 使用Label进行窗体导航 371
10.2.4 模拟浏览器链接 371
10.2.6 对文本框的操作 372
10.2.5 创建一组RadioButton 372
10.2.7 知道文本控件的内容何时发生了改变 373
10.2.8 在文本框中输入隐藏的密码 373
10.2.9 从一个字符串数组中选择一个 374
10.2.10 显示TrackBar的值 374
10.2.11 使用ListBox、CheckedListBox和ComboBox 375
10.2.12 对状态栏的操作 379
10.2.13 对工具栏的操作 380
10.2.14 使用TreeView控件 382
10.2.15 使用ListView控件 384
10.2.16 创建组合窗体 386
10.2.18 在Windows窗体上创建ActiveX控件 388
10.2.19 创建自己的控件 388
10.2.17 使用定时器 388
第11章 绘图名字空间 393
11.1 深入讨论 393
11.1.1 GDI绘图基础 393
11.1.2 字体 407
11.1.3 处理图像 408
11.1.4 打印 411
11.2.1 在窗体上绘图 415
11.2 快速解决方案 415
11.2.2 处理颜色 416
11.2.3 使用画笔和刷子 418
11.2.4 使用转换 422
11.2.5 处理重绘 424
11.2.6 处理字体 425
11.2.7 在窗体上显示图像 429
11.2.8 打印 430
12.1.2 Threading 438
12.1.1 .NET的其他名字空间 438
12.1 深入讨论 438
第12章 其他名字空间 438
12.1.3 全球性 446
12.1.4 Windows服务程序 450
12.1.5 System.Diagnostics 457
12.1.6 文本名字空间 461
12.2 快速解决方案 464
12.2.1 编写多线程代码 464
12.2.2 创建Windows服务应用程序 469
12.2.3 使用断言 475
12.2.4 追踪程序的运行 477
12.2.5 使用事件日志 478
12.2.6 使用StringBuilder 482
12.2.7 使用正则表达式匹配文本中的模式 484
第1 3章 .NET Remoting 489
13.1 深入讨论 489
13.1.1 Remoting的基本概念 489
13.1.2 通道 494
13.1.3 Remoting通信 496
13.1.4 Remoting服务器 499
13.1.5 Remoting客户机 504
13.1.6 Remoting安全 508
13.2 快速解决方案 508
13.2.1 创建Remoting服务器 508
13.2.2 编程配置Remoting服务器 511
13.2.3 创建Remoting客户应用程序 512
13.2.4 编程配置Remoting客户机 515
13.2.5 使用Http通道调用远程对象 515
13.2.6 设置生存期 516
13.2.7 创建客户机激活对象并决定其生存期 517
13.2.8 对Remoting对象的消息进行加密 519
第14章 SOAP和XML 520
14.1 深入讨论 520
14.1.1 高级XML 520
14.1.2 XML schema 522
14.1.3 XML转换器 528
14.1.4 SOAP简介 529
14.2 快速解决方案 532
14.2.1 在Visual Studio.NET中创建XML报文 532
14.2.3 在Visual Studio.NET中创建XSD schema 534
14.2.2 使用Document Outline工具查看XML报文结构 534
14.2.4 从已有的XML报文中创建XSD schema 536
14.2.5 使用XSD schema验证XML报文 537
14.2.6 设计XSLT转换文件 539
14.2.7 把XML报文转换为新的schema 540
第15章 ADO.NET 542
15.1 深入讨论 542
15.1.1 ADO.NET简介 542
15.1.2 数据集(DataSet) 547
15.1.3 连接到数据源 551
15.1.4 处理ADO.NET DataSet 553
15.1.5 ADO.NET中的XML 554
15.1.6 使用Visual Studio.NET的数据工具 555
15.1.7 ADO.NET高级主题 558
15.2 快速解决方案 560
15.2.1 编程创建DataSet 560
15.2.2 添加DataSet关联 562
15.2.3 向Server Explorer窗口中添加数据连接 563
15.2.4 使用数据组件实现对数据源的快速访问 564
15.2.5 通过数据库填充DataSet 566
15.2.6 修改DataSet中的数据 567
15.2.7 保存对DataSet的改变,返回数据库 569
15.2.8 创建Typed DataSet 570
15.2.9 使用DataSet生成XML报文 573
15.2.10 使用XML报文填充DataSet 574
15.2.11 使用DataReader访问数据 575
15.2.12 直接发布数据库命令 576
15.2.13 在ADO.NET中使用存储过程 576
15.2.14 处理ADO.NET事件 578
15.2.15 检查ADO.NET中的错误 579
15.2.16 使用查询设计器生成SQL查询 580
第1 6章 使用COM和Win32 API 582
16.1 深入讨论 582
16.1.1 使用COM 582
16.1.2 使用Win32 API 586
16.2 快速解决方案 588
16.2.1 在.NET工程中使用COM对象 588
16.2.2 对COM对象使用迟绑定 590
16.2.3 在托管C++中使用COM对象 592
16.2.4 在.NET工程中使用ActiveX控件 593
16.2.5 使用平台调用机制来调用DLL中的非托管函数 596