第1章 NET结构 1
1.1 C#与.NET的关系 1
1.2 公共语言运行时 1
1.3 中间语言 4
1.3.1 面向对象的支持和接口 5
1.3.2 值类型和引用类型 6
1.3.3 强数据类型 6
1.3.4 通过异常处理错误 12
1.3.5 属性(attribute)的使用 12
1.4 程序集(Assemblies) 13
1.4.1 私有程序集 13
1.4.2 共享程序集 14
1.4.3 反射 14
1.5 .NET Framework类 14
1.6.1 创建ASP.NET应用程序 16
1.6 用C#创建.NET应用程序 16
1.6.2 创建Windows窗体 18
1.6.3 Windows服务 18
1.7 C#在.NET企业体系结构中的作用 19
1.8 小结 20
第2章 C#基础 22
2.1 引言 22
2.2 第一个C#程序 23
2.3.1 变量的初始化 26
2.3 变量 26
2.3.2 变量的作用域 27
2.3.3 常量 30
2.4 预定义数据类型 31
2.4.1 值类型和引用类型 31
2.4.2 CTS类型 32
2.4.3 预定义的值类型 32
2.4.4 预定义的引用类型 36
2.5.1 条件语句 38
2.5 流控制 38
2.5.2 循环 42
2.5.3 跳转语句 46
2.6 程序的结构 46
2.6.1 类 47
2.6.2 结构 49
2.7 方法 49
2.7.2 调用方法 50
2.7.1 方法的声明 50
2.7.3 给方法传递参数 52
2.8 数组 55
2.9 运算符 59
2.9.1 运算符的简化操作 61
2.9.2 三元运算符 62
2.9.3 checked和unchecked运算符 62
2.9.4 is运算符 63
2.9.7 运算符的优先级 64
2.9.5 sizeof运算符 64
2.9.6 typeof运算府 64
2.10 类型的安全 65
2.10.1 类型转换 65
2.10.2 装箱(Boxing)和取消装箱(Unboxing) 68
2.11 枚举 69
2.12 命名空间 71
2.12.1 using语句 72
2.12.2 命名空间的别名 73
2.13 Main()方法 74
2.13.1 多个Main()方法 74
2.13.2 给Main()方法传送参数 75
2.14 编译C#文件的更多内容 76
2.15 控制台的I/O 78
2.16 使用注释 80
2.17 标识符和关键字 83
2.18 小结 85
3.1 类和继承 86
第3章 面向对象的C#语言 86
3.1.1 单一继承 87
3.1.2 方法的重载 87
3.1.3 方法的重写和隐藏 88
3.1.4 调用函数的基类版本 90
3.1.5 抽象类和抽象函数 90
3.1.6 密封类和密封方法 91
3.1.7 访问修饰符 92
3.2 属性(property) 93
3.2.1 只读和只写属性 94
3.2.2 访问修饰符 94
3.2.3 虚拟抽象属性 95
3.3 内联 95
3.4 Object类 95
3.5 接口 98
3.5.1 定义和执行接口 99
3.5.2 接口的继承 103
3.6 构造和删除 105
3.6.1 构造函数 105
3.6.2 清理:析构函数和Dispose() 115
3.6.3 使用IDisposable接口 118
3.6.4 执行析构函数Dispose() 119
3.7 只读(readonly)字段 121
3.8 结构 122
3.8.1 结构是值类型 123
3.8.2 结构和继承 124
3.8.3 结构的构造函数 124
3.9 运算符重载 125
3.10 索引器 134
3.10.1 给矢量添加索引器 134
3.10.2 其他索引器的样例 138
3.11 小结 138
4.1 错误和异常处理 139
4.1.1 异常类 139
第4章 C#的高级论题 139
4.1.2 捕获异常 141
4.1.3 用户定义的异常类 150
4.2 用户定义的数据类型转换 158
4.2.1 执行用户定义的类型转换 159
4.2.2 多重数据类型转换 165
4.3 委托 169
4.3.1 在C#中使用委托 170
4.3.2 简单的委托样例 173
4.3.3 BubbleSorter样例 175
4.3.4 多路广播委托 178
4.4 事件 180
4.4.1 客户程序角度的事件 181
4.4.2 事件样例:控制台通知 183
4.5 C#预处理程序指令 189
4.5.1 #define和#undef 189
4.5.2 #if,#elif,#else和#endif 190
4.5.5 #line 191
4.5.3 #warning和#error 191
4.5.4 #region和#endregion 191
4.6 属性 192
4.7 后台内存管理 195
4.7.1 值数据类型 195
4.7.2 引用数据类型 197
4.8 不安全的代码 200
4.8.1 指针 201
4.8.2 使用指针优化性能 215
4.9 小结 219
第5章 C#和基类 220
5.1 System.Object 220
5.1.1 对引用对象进行等于比较 222
5.1.2 对值类型进行等于比较 223
5.2 处理字符串 224
5.2.1 System.String 224
5.2.2 建立字符串 225
5.2.3 格式化字符串 229
5.3 正则表达式 235
5.3.1 正则表达式简介 235
5.3.2 RegularExpressionsPlayaround样例 236
5.3.3 显示结果 238
5.3.4 匹配、组和捕获 240
5.4 对象组 242
5.4.1 数组列表 242
5.4.2 集合 244
5.4.3 字典 247
5.5 定制属性 257
5.5.1 编写定制属性 258
5.5.2 WhatsNewAttributes样例 261
5.6 反射 265
5.6.1 System.Type类 265
5.6.2 TypeView样例 268
5.6.3 Assembly类 269
5.6.4 完成WhatsNewAttributes样例 271
5.7 线程 275
5.7.1 多线程的应用程序 276
5.7.2 线程的处理 276
5.7.3 ThreadPlayaround样例 279
5.7.4 线程的优先级 282
5.7.5 同步 283
5.8 小结 288
第6章 在.NET环境中编程 289
6.1 Visual Studio.NET 289
6.1.1 创建项目 291
6.1.2 解决方案和项目 296
6.1.3 Windows应用程序代码 299
6.1.4 读取Visual Studio6项目 299
6.1.5 项目的浏览和编写 300
6.1.6 生成(Building)项目 309
6.1.7 调试 313
6.2 其他.NET工具 315
6.3 .NET用法规则 316
6.3.1 命名约定 317
6.3.2 属性和方法的使用 320
6.3.3 字段的用法 321
6.4 小结 321
第7章 Windows应用程序 322
7.1 .NET中的Windows应用程序 322
7.2.1 未使用Visual Studio .NET的Windows Forms 324
7.2 Windows Forms 324
7.2.2 使用Visual Studio .NET的Windows Forms 328
7.2.3 菜单 334
7.2.4 对话框 339
7.2.5 可视化继承 347
7.3 Windows控件 351
7.4 定制控件 356
7.5 小结 369
8.1 程序集的含义 371
第8章 程序集 371
8.1.1 DLL-Hell的解决方案 372
8.1.2 程序集的特性 372
8.1.3 应用程序域和程序集 373
8.2 程序集的结构 376
8.2.1 程序集的清单 376
8.2.2 命名空间、程序集和组件 377
8.2.3 私有程序集和共享程序集 377
8.2.4 查看程序集 378
8.2.5 建立程序集 378
8.3 跨语言支持 383
8.3.1 CTS和CLS 383
8.3.2 语言无关性 384
8.3.3 CLS要求 392
8.4 给程序集添加资源 394
8.4.1 创建资源文件 394
8.4.2 使用资源文件 396
8.4.3 国际化和资源 398
8.4.4 使用Visual Studio.NET的本地化样例 403
8.5 全局程序集高速缓存 413
8.5.1 本机图像生成器 414
8.5.2 全局程序集高速缓存查看器 414
8.6 创建共享程序集 416
8.6.1 共享程序集名 416
8.6.2 创建一个共享程序集 418
8.7.1 配置类别 422
8.7 配置 422
8.7.2 版本问题 423
8.7.3 配置目录 430
8.8 部署 433
8.8.1 DLL的部署 433
8.8.2 创建Merge Module 433
8.9 小结 434
第9章 .NET数据访问 436
9.1 ADO.NET概述 436
9.1.3 数据库特定的类 437
9.1.1 命名空间 437
9.1.2 共享类 437
9.2 使用数据库连接 438
9.2.1 高效地使用连接 439
9.2.2 事务处理 441
9.3 命令 443
9.3.1 执行命令 444
9.3.2 调用存储过程 447
9.4 快速数据访问:数据读取器 450
9.5 管理数据和关系:数据集 453
9.5.1 数据表 454
9.5.2 数据的关系 460
9.5.3 数据的约束 461
9.6 XML模式 464
9.7 填充数据集 470
9.7.1 用数据适配器来填充DataSet 471
9.8 保存对数据集的修改 472
9.7.2 给XML中的数据集填充数据 472
9.8.1 通过数据适配器进行更新 473
9.8.2 编写XML输出结果 475
9.9 使用ADO.NET 477
9.9.1 分层开发 477
9.9.2 SQL Server键的生成 478
9.9.3 命名约定 480
9.9.4 性能 482
9.10 小结 483
10.1.1 显示列表数据 484
第10章 查看.NET数据 484
10.1 DataGrid控件 484
10.1.2 数据源 487
10.1.3 DataGrid类的层次结构 493
10.2 数据绑定 497
10.2.1 简章的绑定 497
10.2.2 数据绑定对象 498
10.3.1 创建一个连接 503
10.3 Visual Studio和数据访问 503
10.3.2 选择数据 505
10.3.3 生成一个DataSet 507
10.3.4 更新数据源 508
10.3.5 构建模式 510
10.3.6 其他常见的要求 515
10.4 小结 523
第11章 处理XML 524
11.1 .NET支持的XML标准 524
11.2 System.Xml命名空间 525
11.3 在.NET中使用MSXML 526
11.4 使用System.Xml类 529
11.5 读写流格式的XML 529
11.5.1 使用XmlTextReader类 530
11.5.2 使用XmlValidatingReader类 534
11.5.3 使用XmlTextWriter类 537
11.6 在.NET中使用DOM 539
11.7 在NET中使用XPath和XSLT 545
11.7.1 System.XPath命名空间 545
11.7.2 Sysrem.Xml.Xsl命名空间 549
11.8 XML和ADO.NET 554
11.8.1 将ADO.NET数据转换为XML文档 555
11.8.2 把XML文档转换为ADO.NET数据 563
11.8.3 读写DiffGram 566
11.9 在XML中对对象进行串行化 569
11.10 小结 580
第12章 文件和注册表操作 581
12.1 管理文件系统 581
12.1.1 表示文件和文件夹的.NET类 582
12.1.2 Path类 585
12.1.3 样例:文件浏览器 585
12.2 移动、复制和删除文件 590
12.3.1 流 595
12.3 读写文件 595
12.3.2 读写二进制文件 596
12.3.3 读写文本文件 601
12.4 读写注册表 608
12.4.1 注册表 608
12.4.2 .NET注册表类 610
12.4.3 样例:SelfPlacingWindow 612
12.5 小结 618
13.1 Active Directory的结构 619
第13章 使用Active Directory 619
13.1.1 特性 620
13.1.2 Active Directory 620
13.1.3 Active Directory数据的特性 624
13.1.4 模式 624
13.2 Active Directory的管理 625
13.2.1 Active Directory Users and Computers工具 626
13.2.2 ADSI Edit工具 627
13.2.3 ADSI Viewer工具 628
13.3 Active Directory Service Interfaces(ADSI) 629
13.4 Active Directory编程 629
13.4.1 System.Directory Services命名空间中的类 629
13.4.2 绑定 630
13.4.3 获取目录项 634
13.4.4 对象集合 636
13.4.5 缓存 637
13.4.6 创建新对象 637
13.4.7 更新目录项 638
13.4.8 访问内部的ADSI对象 639
13.4.9 在Active Directory中搜索 640
13.5 搜索用户对象 644
13.5.1 用户界面 644
13.5.2 获取模式命名环境 644
13.5.3 获取User类的属性名 646
13.5.4 搜索用户对象 647
13.6 小结 649
14.1 ASP.NET简介 650
第14章 ASP.NET页面 650
14.2 ASP.NET Web Form 651
14.3 ASP.NET和数据绑定 668
14.3.1 更新会议登记应用程序 668
14.3.2 数据绑定的更多内容 677
14.4.应用程序配置 682
14.5 小结 683
15.1 SOAP 684
第15章 Web服务 684
15.2 WSDL 686
15.3 Web服务 687
15.3.1 创建Web服务 688
15.3.2 使用Web服务 691
15.4 扩充Meeting Room Booker样例 693
15.4.1 Meeting Room Booker Web服务 693
15.4.2 Meeting Room Booker客户 696
15.5 使用SOAP标题交换数据 699
15.6 小结 703
第16章 用户控件和定制控件 705
16.1 用户控件 705
16.2 定制控件 712
16.2.1 定制控件的项目配置 713
16.2.2 基本的定制控件 716
16.2.3 创建合成的定制控件 721
16.3 测验民意的投票控件 723
16.3.1 Candidate控件 725
16.3.2 StrawPoll控件构建器 727
16.3.3 测试民意的投票类型 728
16.3.4 测试民意的投票控件 728
16.4 小结 735
第17章 COM的互操作性 736
17.1 COM概述 736
17.2.1 COM组件的绑定 737
17.2 在.NET中使用COM组件 737
17.2.2 Runtime Callable Wrappers 738
17.2.3 使用C++COM组件 740
17.2.4 用Recordset填写DataSet 743
17.2.5 COM组件的后期绑定 745
17.2.6 释放COM对象 746
17.2.7 在.NET中使用ActiveX控件 746
17.3.1 COM可调用的包装器 748
17.3 在COM中使用.NET组件 748
17.3.2 C#阶乘组件 749
17.3.3 .NET组件的早期绑定 751
17.4 平台调用服务 752
17.5 小结 754
第18章 COM+服务 755
18.1 COM+服务的展望 755
18.2 COM+服务包括的内容 756
18.2.1 事务 757
18.2.2 Just In Time Activation(JIT) 758
18.2.3 安全 759
18.2.4 事件 759
18.2.5 对象池 760
18.2.6 消息队列 760
18.2.7 Component Load Balancing服务 761
18.3 与.NET程序集一起使用COM+服务 761
18.3.1 与.NET程序集一起使用事务处理 763
18.3.2 与.NET程序集一起使用对象池 769
18.3.3 与.NET程序集一起使用JIT激活服务 771
18.4 小结 772
第19章 使用GDI+绘图 773
19.1 理解绘图规则 773
19.1.1 GDI和GID+ 773
19.1.2 绘制图形 775
19.1.3 使用OnPaint绘制图形 778
19.1.4 使用剪切区域 779
19.2.1 Point和PointF 781
19.2 测量坐标和区域 781
19.2.2 Size和SizeF 782
19.2.3 Rectangle和RectangleF 784
19.2.4 Region 785
19.3 调试的一个注意事项 785
19.4 绘制可滚动的窗口 786
19.5 颜色 792
19.5.1 红绿蓝(RGB)值 792
19.5.2 命名的颜色 793
19.5.3 图形显示模式和安全的调色板 793
19.5.4 安全调色板 794
19.6 画笔和钢笔 794
19.6.1 画笔 795
19.6.2 钢笔 795
19.7 绘制图形和线条 796
19.8 显示图像 798
19.9 绘制文本 801
19.10 字体和字体系列 803
19.11 样例:枚举字体系列 805
19.12 编辑文本文档:CapsEditor样例 807
19.12.1 Invalidate()方法 811
19.12.2 计算项目和文档的大小 812
19.12.3 OnPaint() 814
19.12.4 坐标转换 815
19.12.5 响应用户的输入 817
19.13 打印 820
19.14 小结 825
第20章 访问Internet 826
20.1 WebClient类 826
20.1.1 下载文件 827
20.1.2 基本的Web客户样例 827
20.1.3 上传文件 828
20.2 WebRequest类和WebResponse类 829
20.3 把输出结果作为HTML页面显示 832
20.4.1 URI 835
20.4 实用类 835
20.4.2 IP地址和DNS名称 837
20.5 较低层的协议 839
20.6 小结 845
第21章 带有.NET Remoting的分布式应用程序 846
21.1 .NET Remoting的含义 847
21.1.1 Web Services Anywhere 847
21.1.2 CLR Object Remoting 848
21.2 .NET Remoting概述 848
21.3 环境 850
21.3.1 激活 851
21.3.2 属性和特性 851
21.3.3 环境之间的通信 852
21.4 远程对象、客户机和服务器 852
21.4.1 远程对象 852
21.4.2 简单的服务器 853
21.4.3 简单的客户机 854
21.5 .NET Remoting体系结构 856
21.5.1 信道 856
21.5.2 格式标识符 860
21.5.3 ChannelServices和RemotingConfiguration 860
21.5.4 对象的激活 861
21.5.5 消息接收器 865
21.5.6 在远程方法中传递对象 866
21.5.7 生存期管理 869
21.6 .NET Remoting的其他特性 872
21.6.1 配置文件 872
21.6.2 驻留应用程序 881
21.6.3 类、接口和Soapsuds 882
21.6.4 跟踪服务 884
21.6.5 异步的远程调用 886
21.6.6 远程调用和事件 887
21.6.7 调用环境 894
21.7 小结 895
第22章 Windows服务 897
22.1 Windows服务 897
22.2 Windows服务的体系结构 898
22.2.1 服务程序 898
22.2.2 服务控制程序 900
22.2.3 服务配置程序 900
22.3 System.ServiceProcess命名空间 900
22.4 创建Windows服务 900
22.4.1 使用套接字的类库 901
22.4.2 TCPClient样例 905
22.4.3 Windows服务项目 907
22.4.4 线程和服务 912
22.4.5 服务的安装 912
22.4.6 安装程序 913
22.5 服务的监视和控制 917
22.5.1 MMC计算机管理 918
22.5.3 sc.exe 919
22.5.2 net.exe 919
22.5.4 Visual Studio.NET Server Explorer 920
22.5.5 ServiceController类 920
22.6 故障排除 926
22.6.1 交互式服务 926
22.6.2 事件日志 927
22.6.3 性能监视 931
22.7.1 网络绑定的变化和电源事件 937
22.7 Windows 2000的服务特性 937
22.7.2 故障恢复 938
22.7.3 作为服务的COM+应用程序 938
22.8 小结 939
第23章 .NET的安全性 940
23.1 代码访问的安全性 940
23.1.1 代码组 941
23.1.2 代码访问权限和权限集 947
23.1.3 策略的级别:Machine、User和Enterprise 951
23.2 对Framework中安全性的支持 953
23.2.1 要求权限 954
23.2.2 请求权限 957
23.2.3 隐式的权限 959
23.2.4 拒绝权限 960
23.2.5 断言权限 961
23.2.6 创建代码访问权限 963
23.3.7 声明的安全性 963
23.3.1 Principal 964
23.3 基于角色的安全性 964
23.3.2 Windows Principal 965
23.3.3 角色 967
23.3.4 声明基于角色的安全性 967
23.4 安全策略的管理 968
23.4.1 安全配置文件 968
23.4.2 代码组和权限的管理 972
23.4.3 安全性的启用和禁用 972
23.4.6 代码组的删除 973
23.4.4 重置安全策略 973
23.4.5 代码组的创建 973
23.4.7 代码组权限的更改 974
23.4.8 权限集的创建和应用 975
23.4.9 使用强名称发布代码 977
23.4.10 使用证书发布代码 980
23.4.11 区域的管理 987
23.5 小结 989
附录A 面向对象编程的原则 990
A.1 VB6程序员的注意事项 990
A.2 什么是对象 991
A.3 编程中的对象 991
A.3.1 类成员 992
A.3.2 类的定义 992
A.3.3 对象的实例化和使用 993
A.3.4 使用静态成员 995
A.3.5 引用类型的注意事项 998
A.3.6 方法的重载 999
A.3.7 属性 1001
A.4 继承 1003
A.4.1 在C#中使用继承 1004
A.4.2 类的层次结构和类的设计 1010
A.4.3 多态性和虚方法 1012
A.4.4 方法的隐藏 1014
A.4.5 抽象函数和基类 1015
A.5 接口 1019
A.4.6 密封类和密封方法 1019
A.6 构造和删除 1020
A.7 小结 1023
附录B C#的编译器选项 1025
B.1 使用C#编译器 1025
B.1.1 输入和输出文件 1026
B.1.2 编译不同的项目类型 1026
B.1.3 响应文件 1027
B.2 编译器选项 1027