第1章 Microsoft.NET平台 1
1.1 网络计算时代 1
1.2 Microsoft.NET平台 2
1.3 .NET Framework 4
1.3.1 公共语言运行时 4
1.3.2 基础类库 9
1.3.3 ADO.NET和XML 10
1.3.4 基于ASP.NET编程框架上的WebForms和Web Service 11
1.3.5 WinForms用户界面 13
1.3.6 .NET Framework的优势 13
1.4 新一代编程语言C# 13
1.4.1 C#的新特性 14
1.4.2 C#与C++ 18
1.4.3 C#与Visual Basic.NET 19
1.4.4 C#与Java 19
2.1 Visual Studio.NET集成开发环境 23
第2章 C#编程和编译环境 23
2.1.1 .NET集成开发环境(IDE)简介 24
2.1.2 创建项目 27
2.1.3 编写代码环境 29
2.2 一个简单的C#程序 32
2.3 编辑、编译和运行一个C#程序 38
第3章 数据类型和变量 41
3.1.1 变量 42
3.1 变量和常量 42
3.1.2 常量 49
3.2 数值类型 49
3.2.1 整数类型 52
3.2.2 字符类型 53
3.2.3 浮点数类型 56
3.2.4 小数类型 57
3.2.5 布尔型 58
3.2.6 检查和不检查 60
3.3 引用类型 60
3.3.2 字符串类型 62
3.3.1 对象类型 62
3.4 各种简单类型的数据间转换 64
3.5 装箱和拆箱转换 67
3.5.1 装箱转换 67
3.5.2 拆箱转换 68
第4章 运算符和表达式 71
4.1 C#运算符概述 71
4.2 赋值运算符及其表达式 73
4.3.1 加法和减法运算符 74
4.3 算术运算符及其表达式 74
4.3.2 自增和自减运算符 75
4.3.3 乘法和除法运算符 76
4.3.4 取余运算符 77
4.4 关系运算符及其表达式 78
4.5 逻辑运算及其表达式 79
4.6 位运算符及其表达式 80
4.8.2 sizeof运算符 83
4.8.1 new运算符 83
4.8 其他运算符 83
4.7 条件运算符及其表达式 83
4.8.3 is、as和typeof运算符 84
4.8.4 checked和unchecked运算符 86
第5章 数据的输入和输出 88
5.1 控制台输入 88
5.1.1 Console.Read()方法 88
5.1.2 Console.ReadLine()方法 89
5.2.1 数据的格式化 90
5.2 控制台输出 90
5.2.2 格式化说明符 93
5.3 处理字符串的方法 101
5.3.1 String类的字符串方法 101
5.3.2 StringBuilder类的字符串方法 102
5.3.3 Parse()方法 104
5.3.4 Convert类 104
第6章 程序控制语句 107
6.1 选择结构程序设计 107
6.1.1 if语句 107
6.1.2 switch语句 110
6.1.3 程序举例 113
6.2 循环结构程序设计 115
6.2.1 while语句 115
6.2.2 do-while语句 116
6.2.3 for语句 117
6.2.4 foreach-in语句 119
6.2.5 程序举例 126
6.3 break语句、continue语句和goto语句 127
6.3.1 break语句 127
6.3.2 continue语句 128
6.3.3 goto语句 129
6.3.4 程序举例 129
第7章 数组 133
7.1 一维数组 133
7.1.1 一维数组的定义和初始化 133
7.1.2 引用一维数组元素 135
7.2.1 二维数组的定义和初始化 139
7.2 二维数组 139
7.2.2 初始化二维数组 140
7.2.3 引用二维数组元素 141
7.3 不规则数组 146
7.3.1 二维不规则数组的定义和初始化 147
7.3.2 二维不规则数组的引用 148
7.4 使用System.Array类的方法和属性 150
7.4.1 Array类的属性 150
7.4.2 使用Array类构造数组 152
7.4.3 使用Array类的方法 153
第8章 类 159
8.1 面向对象程序设计思想 159
8.2 类及其构成 162
8.3 创建对象 164
8.4 类的数据成员 165
8.4.1 常量成员 165
8.4.2 变量成员 166
8.4.3 将类定义为数据成员 176
8.5.1 定义类的方法成员 178
8.5 类的方法成员 178
8.5.2 使用方法 180
8.5.3 带参数的方法 184
8.5.4 静态方法 190
8.5.5 方法重载 191
8.5.6 其他类方法 194
8.5.7 递归方法 202
8.6 类的属性成员 203
8.7 索引器 208
8.8 运算符重载 210
8.8.1 重载运算符方法 210
8.8.2 重载双目运算符 211
8.8.3 重载单目数学运算符 215
8.8.4 重载关系运算符 216
第9章 继承与多态 218
9.1 继承机制 218
9.1.1 继承的概念 218
9.1.2 继承的工作机制 220
9.1.3 派生类的构造函数和析构函数 223
9.1.4 base关键字的另一用途 225
9.1.5 隐藏基类成员 225
9.1.6 使用protected保护访问方式 227
9.1.7 使用internal内部访问方式 227
9.2 多态性和虚方法 229
9.2.1 多态性 229
9.2.2 虚方法 232
9.3.1 抽象类 237
9.3 抽象类和抽象方法 237
9.3.2 抽象方法 238
9.4 密封类和密封方法 244
9.4.1 密封类 244
9.4.2 密封方法 245
9.5 终极基类Object 246
9.5.1 Object类中的方法 246
9.5.2 装箱/拆箱前后的数据类型 248
9.6 类转换 249
9.6.1 关键字is 249
9.6.2 关键字as 250
9.6.3 不同类型的对象组成的数组 251
第10章 接口、代理和事件 254
10.1 接口 254
10.1.1 接口与类 254
10.1.2 接口的定义 255
10.1.3 接口的实现与使用 260
10.1.4 接口映射 264
10.1.5 显式接口成员实现 265
10.1.6 接口实现的继承 269
10.1.7 接口的重新实现 274
10.1.8 接口的查询 276
10.2 代理 277
10.2.1 代理的概念 277
10.2.2 代理的定义 278
10.2.3 代理的使用 279
10.2.4 Delegate类和MulticastDelegate类 282
10.2.5 多重代理的实现 286
10.3 事件 288
10.3.1 事件的概念 288
10.3.2 创建事件和使用事件 288
10.3.3 多播事件 297
第11章 结构和枚举 300
11.1 结构 300
11.1.1 结构与类 300
11.1.2 结构与结构成员的定义 301
11.1.3 使用和访问结构成员 302
11.1.4 结构的嵌套 304
11.1.5 结构与类的区别 305
11.2 枚举 306
11.2.1 枚举的定义 306
11.2.2 使用和访问枚举成员 309
第12章 命名空间 311
12.1 命名空间 311
12.2 定义命名空间 311
12.3.1 命名空间的完全限定名 312
12.3 使用命名空间 312
12.3.2 C#应用程序的组织结构 314
12.3.3 using语句 314
第13章 异常处理 320
13.1 异常处理的概念 320
13.2 C#的异常控制机制 322
13.2.1 使用try/catch语句抛出和处理异常 322
13.2.2 使用throw语句抛出异常 327
13.2.3 使用finally语句添加最后执行的操作 329
13.3 .NET Framework中的异常类 331
13.3.1 C#异常处理的内部机制 331
13.3.2 .NET Framework中的异常类 332
13.4 自定义异常类 336
第14章 编译预处理和调试/测试技术 339
14.1 程序中的错误 339
14.2 逐行检查代码 340
14.3 编译预处理 340
14.3.1 定义预处理 340
14.3.2 条件编译预处理 341
14.3.3 输出代码中的错误和警告 344
14.3.4 修改行号 345
14.3.5 区域预编译 347
14.4 使用调试工具 348
14.4.1 几个基本调试概念 348
14.4.2 常用的调试策略 350
14.4.3 程序的调试信息 351
14.5 .NET环境下的单元测试 355
14.5.1 NUnit单元测试工具 356
14.5.2 使用NUnit测试工具 357
第15章 代码属性 362
15.1 概述 362
15.2 使用代码属性 362
15.3 .NET框架下的预定义属性类 365
15.3.1 带参数的属性 365
15.3.2 System.Attribute类 365
15.3.3 描述程序集和模块的属性 366
15.3.4 描述源代码的代码属性 368
15.4 自定义代码属性类 373
15.5 检索有关的代码属性信息 376
第16章 不安全代码 381
16.1 不安全代码 381
16.2 不安全的代码块 381
16.2.1 指针 382
16.2.2 unsafe关键字 383
16.2.3 fixed语句 384
16.3.1 用指针访问对象 386
16.3 C#程序中的指针 386
16.3.2 指针运算 388
第17章 创建Windows应用程序 390
17.1 什么是Windows窗体 390
17.2 创建简单的WinForm程序 390
17.3 Windows窗体应用程序模型 393
17.3.1 窗体 394
17.3.2 属性 394
17.3.3 控件 397
17.3.4 事件 400
17.3.5 Windows Forms程序设计的步骤 401
17.4 WinForm控件 401
17.4.1 常用控件 401
17.4.2 示例 401
17.5 Visual C#的菜单设计与编程 409
17.5.1 菜单设计基础知识 409
17.5.2 示例 410
17.5.3 用程序完成菜单设计 412
17.6 Visual C#中的MDI编程 417
第18章 C#组件编程 421
18.1 用C#做类库 421
18.1.1 制作一个组件 421
18.1.2 使用DLL 425
18.2 用C#做自定义控件 427
18.2.1 创建控件 427
18.2.2 使用控件 431
18.3 用C#做用户控件 431
18.3.1 控件制作 431
18.3.2 使用组件 434
第19章 C#数据库编程 438
19.1 ADO.NET数据库访问 438
19.1.1 ADO.NET概述 438
19.1.2 ADO.NET的数据访问对象 440
19.2 ADO.NET访问常用数据库 450
19.2.1 SQLServer 450
19.2.2 Oracle 451
19.3 C#数据库的Windows编程 452
19.2.3 Access 452
19.4 C#数据库的Web编程 458
第20章 开发Web应用程序 461
20.1 ASP.NET的开发环境配置 461
20.2 编写ASP.NET Web应用程序 462
20.3 ASP.NET服务器端控件 463
20.3.1 Web服务器控件 463
20.3.2 HTML服务器控件 467
20.3.3 验证控件 468
20.3.4 用户控件 471
20.4 创建Web服务 474
20.4.1 Web服务 474
20.4.2 一个简单的Web服务 474
20.4.3 使用Web服务访问数据库 476
第21章 .NET报表设计 480
21.1 OWC组件 480
21.1.1 OWC组件概述 480
21.1.2 OWC组件的内部控件 481
21.1.3 OWC组件应用示例 483
21.1.4 Spreadsheet控件使用语法参考 487
21.2 SQL Server Reporting Services 490
21.2.1 报表制作环境 490
21.2.2 创建简单的报表 491
21.3 Crystal Reports 494
21.3.1 Crystal Reports概述 494
21.3.2 报表设计 495
21.3.3 创建简单报表 497
21.3.4 用CrystalReportViewer报表查看器承载报表 499