第1章 C#与Visual Studio.NET概览 1
1.1 C#简介 1
1.1.1 C#的诞生背景 2
1.1.2 C#的特点 3
1.2 Visual Studio.NET简介 4
1.2.1 Visual Studio.NET的特性 4
1.2.2 Visual Studio.NET的安装 6
1.2.3 Visual Studio.NET的集成开发环境 8
1.3 使用Visual Studio.NET创建C#应用程序的大致过程 10
1.3.1 配置集成开发环境 10
1.3.2 创建新项目 11
1.3.3 编译与运行 12
1.4 小结 12
第2章 C#程序设计初步 13
2.1 第一个简单的C#程序:Hello World! 13
2.1.1 按六步法编写HelloWorld.cs 13
2.1.2 程序HelloWorld.cs源代码简短分析 15
2.2 面向对象编程方法简介 17
2.2.1 面向过程的先天缺陷与面向对象的优点 17
2.2.2 面向对象基础知识 18
2.3 Unicode 20
2.4 C#的标识符和关键字 21
2.5 简单类型和常量 23
2.5.1 数值类型 23
2.5.2 字面值 25
2.5.3 字符类型与字符字面值 26
2.5.4 布尔类型与布尔型字面值 27
2.6 字符串 28
2.6.1 字符串类型与常数 28
2.6.2 使用字符串 28
2.7 C#类型简介 30
2.7.1 类型划分 30
2.7.2 简单类型小结 32
2.7.3 装箱与拆箱 34
2.7.4 类型的优点 36
2.7.5 C#是一种强类型语言 36
2.8 C#的运算符和表达式 38
2.8.1 算术运算符 39
2.8.2 关系运算符 41
2.8.3 条件逻辑运算符 42
2.8.4 位运算符 43
2.8.5 赋值表达式 44
2.8.6 字符串连接 44
2.8.7 其他运算符和表达式 45
2.8.8 运算符的优先级与结合性 46
2.9 变量 48
2.9.1 变量定义 48
2.9.2 变量的赋值 49
2.9.3 变量的初始化 50
2.9.4 常量 51
2.10 语句 51
2.11 小结 52
3.1.2 创建类的实例 53
3.1.1 类的定义 53
3.1 类及其构成 53
第3章 类基础知识 53
3.1.3 类的继承和派生 54
3.1.4 类成员访问修饰符 54
3.2 类的数据成员 54
3.2.1 常量成员(constant member) 55
3.2.2 变量成员 56
3.3 类的方法成员 61
3.4 类的属性成员 62
3.5 小结 66
4.2.1 声明方法 67
4.2 使用方法 67
4.1 方法概述 67
第4章 方法成员详解 67
4.2.2 方法返回值 68
4.2.3 调用方法 69
4.3 无参方法 69
4.4 有参方法 70
4.4.1 值参数 70
4.4.2 引用参数 71
4.4.3 输出参数 72
4.4.4 数组参数 72
4.5 方法重载 75
4.5.1 实现重载方法 76
4.5.2 调用重载方法 77
4.5.3 重载方法与隐式转换 78
4.6 静态方法 78
4.7 小结 82
第5章 构建完整类 83
5.1 实例构造函数与析构函数 83
5.1.1 创建和初始化类的实例 83
5.1.2 构造函数及其用途 86
5.1.3 使用实例构造函数 88
5.1.4 重载实例构造函数 93
5.1.5 实例析构函数 95
5.2 静态构造函数 97
5.3 只读成员 99
5.4 属性 100
5.4.1 属性访问函数 100
5.4.2 静态属性 102
5.5 索引器 104
5.5.1 定义索引器 104
5.5.2 调用索引器 105
5.6.1 用户自定义运算符重载 107
5.6 运算符重载 107
5.5.3 索引器重载 107
5.6.2 实现运算符重载 108
5.7 嵌套类 111
5.8 小结 112
第6章 流程控制 113
6.1 流程控制简介 113
6.2 if分支语句 114
6.2.1 简单if语句 114
6.2.2 多分支if-else语句 116
6.2.3 嵌套if语句 118
6.3.1 switch语句的基本结构 119
6.3 switch语句 119
6.3.2 使用switch语句 120
6.4 while循环语句 123
6.5 do-while循环语句 125
6.6 for循环语句 126
6.7 foreach语句 129
6.8 跳转语句 131
6.8.1 break语句 131
6.8.2 continue语句 131
6.8.3 goto语句 132
6.9 小结 133
第7章 递归基础知识 134
7.1 什么是递归 134
7.2 递归和迭代 135
7.3 递归应用 137
7.4 小结 139
第8章 数组 140
8.1 数组概述 140
8.2 一维数组 140
8.2.1 定义一维数组 140
8.2.2 初始化一维数组 142
8.2.3 访问一维数组 143
8.3.1 定义二维数组 144
8.3 多维数组 144
8.3.2 初始化二维数组 146
8.3.3 访问二维数组 147
8.4 交错数组 149
8.4.1 交错数组的定义 149
8.4.2 初始化交错数组 150
8.4.3 访问交错数组 151
8.5 数组与方法 153
8.5.1 数组元素作为方法中的参数 153
8.5.2 数组引用作为方法的参数 155
8.5.3 数组作为类中的实例变量 159
8.6 数组的排序 165
8.6.1 冒泡排序法 165
8.6.2 快速排序法 166
8.7 数组检索 167
8.7.1 数组顺序检索 167
8.7.2 数组二分检索 169
8.7.3 System.Array的IndexOf方法检索 172
8.8 数组应用 174
8.8.1 矩阵元素求和 174
8.8.2 矩阵加法 176
8.8.3 矩阵乘法 179
8.9 小结 181
第9章 告别指针 183
9.1 不安全上下文与unsafe关键字 184
9.2 fixed关键字 186
9.3 C#中的指针类型 188
9.4 指针运算 189
9.4.1 指针间接寻址 189
9.4.2 ++/--以及+/-运算 190
9.4.3 stackalloc关键字 191
9.5 指针类型转换 192
9.6 访问指针成员 192
9.7 小结 193
第10章 继承与多态 194
10.1 C#的继承机制 194
10.1.1 继承基础知识 194
10.1.2 访问与隐藏基类成员 200
10.1.3 多级继承 206
10.1.4 继承与访问修饰符 208
10.2 接口继承 213
10.3 控件继承 214
10.3.1 Windows窗体继承 214
10.3.2 Control类继承 216
10.3.3 UserControl类继承 220
10.3.4 继承选择器对话框 223
10.4 多态性 224
10.4.1 什么是多态性 224
10.4.2 实现多态 225
10.4.3 虚方法 227
10.4.4 接口多态性 231
10.4.5 继承多态性 232
10.5 小结 233
第11章 接口 234
11.1 接口概述 234
11.1.1 接口 234
11.1.2 接口与组件 235
11.1.3 组件化程序设计 236
11.2 定义接口 236
11.3 定义接口成员 238
11.4 访问接口 240
11.4.1 对接口成员的访问 240
11.4.2 类对接口的实现 242
11.5 实现接口 244
11.5.1 显式实现接口成员 244
11.5.2 继承接口实现 247
11.5.3 重新实现接口 249
11.5.4 映射接口 251
11.6 接口转换 254
11.7 覆盖虚接口 260
11.8 小结 261
第12章 结构类型与枚举类型 262
12.1 结构类型 262
12.1.1 结构类型概述 262
12.1.2 结构声明 262
12.1.3 结构变量 264
12.2 结构和其他编程元素 267
12.2.1 结构和数组 267
12.2.2 结构和对象 268
12.2.3 结构和过程 272
12.2.4 结构中的结构 278
12.3 结构和类 280
12.4 枚举类型 282
12.4.1 声明枚举类型 282
12.4.2 枚举成员的赋值 284
12.4.3 枚举成员的访问 285
12.4.4 System.Enum类 287
12.5 枚举类型应用 289
12.6 小结 294
13.1 垃圾回收概述 295
第13章 垃圾回收 295
13.2 自动动态内存管理机制 296
13.2.1 对象的废弃 296
13.2.2 GC类 298
13.3 释放非内存有限资源 299
13.4 小结 303
第14章 名字空间、编译单元和程序集 304
14.1 名字空间 304
14.1.1 自定义名字空间 305
14.1.2 .NET框架类库名字空间 306
14.2.1 创建名字空间或类型的别名 308
14.1.3 使用名字空间的优点 308
14.2 using指令 308
14.2.2 导入名字空间中的类型 310
14.3 名字空间、编译单元与程序集 312
14.3.1 重用集合中的名字空间 312
14.3.2 生成多编译单元程序集 313
14.4 剖析程序集的内容 314
14.5 小结 316
第15章 异常处理 317
15.1 异常处理概览 317
15.2.1 Exception异常类 320
15.2 .NET Framework中的异常类 320
15.2.2 常用异常类 323
15.3 异常捕获 324
15.3.1 try和catch块概述 324
15.3.2 使用try-catch捕获异常 328
15.3.3 嵌套try块 330
15.3.4 多重catch块 332
15.4 异常抛出 333
15.4.1 用throw显式抛出异常 333
15.4.2 使用finally语句抛出异常 335
15.5 编写自定义异常 336
15.6 小结 337
第16章 委托和事件 339
16.1 委托 339
16.1.1 声明委托 339
16.1.2 实例化委托 339
16.1.3 使用委托 340
16.1.4 组播委托 343
16.2 编写事件驱动程序 346
16.2.1 创建包含事件成员的类 346
16.2.2 创建包含事件处理方法的类 347
16.3 小结 352
17.1 多线程概述 354
第17章 线程处理 354
17.2.1 创建新线程 355
17.2 创建多线程 355
17.2.2 暂停和继续线程 356
17.2.3 销毁线程 357
17.2.4 线程优先级 357
17.3 线程池 358
17.3.1 System.Threading名字空间 358
17.3.2 ThreadPool类 359
17.4 线程处理设计原则 361
17.5 小结 363
18.1 预处理器概述 364
第18章 预处理器 364
18.2 预处理器指令 365
18.2.1 #if与#endif 365
18.2.2 #define与#undef 365
18.2.3 #else 366
18.2.4 #elif 366
18.2.5 #warning 367
18.2.6 #error 368
18.2.7 #line 368
18.2.8 #region与#endregion 368
18.3 小结 369
第19章 XML文档及特性 370
19.1 XML文档 370
19.1.1 文档注释格式 370
19.1.2 文档注释标记 371
19.1.3 生成XML文档 373
19.2 特性(attribute) 374
19.2.1 概述 375
19.2.2 自定义特性 377
19.3 小结 379
20.1.1 控制台输入 381
20.1 控制台I/O 381
第20章 I/O基础 381
20.1.2 控制台输出 383
20.1.3 格式化字符串 385
20.2 文件I/O 388
20.2.1 文本文件和二进制文件 388
20.2.2 Stream类 389
20.2.3 FileStream类 390
20.2.4 BinaryReader与BinaryWriter类 392
20.2.5 StreamReader与StreamWriter类 392
20.2.6 File类 393
20.2.7 Directory类 394
20.2.8 Path类 396
20.3 小结 397
第21章 Windows应用程序可视化设计 398
21.1 Windows应用程序简介 398
21.2 Visual Studio.NET提供的控件 398
21.3 设置应用程序可视化界面 400
21.3.1 创建应用程序窗体 400
21.3.2 添加控件 401
21.3.3 控件选择与布局 404
21.4 为控件添加事件 404
21.5 小结 406
第22章 用C#开发ASP.NET 407
22.1 ASP.NET简介 407
22.1.1 ASP.NET的特点 407
22.1.2 Web窗体 407
22.1.3 编译运行Web应用程序 408
22.2 ASP.NET服务器控件 409
22.2.1 简介 409
22.2.2 添加ASP.NET服务器控件 410
22.2.3 在Web窗体页中创建事件处理程序 411
22.3 创建ASP.NET Web应用程序示例 412
22.4 小结 413
23.1 简介 414
23.1.1 Microsoft Windows安装程序介绍 414
23.1.2 部署概念 414
第23章 部署应用程序 414
23.2 部署应用程序 415
23.2.1 创建或添加部署项目 415
23.2.2 设置部署项目属性 416
23.2.3 向部署项目中添加项 416
23.2.4 添加和移除图标 417
23.2.5 从部署项目中排除项 418
23.3.2 注册表编辑器 419
23.3 部署编辑器 419
23.3.1 文件系统编辑器 419
23.3.3 文件类型编辑器 420
23.3.4 用户界面编辑器 421
23.3.5 自定义操作编辑器 422
23.3.6 启动条件编辑器 422
23.4 部署一个简单的Windows应用程序 423
23.5 小结 428
附录A 不同语言中的关键字比较 429
附录B 不同语言的运算符比较 435
附录C C#编译器选项 438