第1章 C#程序与Visual Studio开发环境 1
1.1 C#语言和.NET技术简介 1
1.1.1 .NET技术简介 1
1.1.2 C#概述 3
1.2 C#程序的基本结构 3
1.2.1 注释 5
1.2.2 命名空间 5
1.2.3 类型及其成员 5
1.2.4 程序主方法 6
1.2.5 程序集 6
1.3 Visual Studio开发环境 6
1.3.1 Visual Studio 2010的启动 6
1.3.2 创建项目 6
1.3.3 Visual Studio 2010界面介绍 7
1.3.4 编写代码环境 8
1.3.5 编辑、编译和运行一个C#程序 9
1.4 本章小结 9
1.5 习题 9
第2章 C#语法基础 11
2.1 数据类型 11
2.1.1 简单值类型 11
2.1.2 复合值类型 14
2.1.3 数组 17
2.1.4 类型转换 20
2.2 操作符和表达式 21
2.2.1 算术操作符 21
2.2.2 自增和自减操作符 22
2.2.3 位操作符 23
2.2.4 赋值操作符 25
2.2.5 关系操作符 26
2.2.6 逻辑操作符 26
2.2.7 条件操作符 27
2.2.8 操作符的优先级及结合性 28
2.3 控制结构 29
2.3.1 选择结构 29
2.3.2 循环结构 36
2.3.3 循环的嵌套 41
2.3.4 跳转结构 43
2.4 数据的输入和输出 46
2.4.1 控制台输出 47
2.4.2 控制台输入 48
2.4.3 处理字符串方法 49
2.5 本章小结 51
2.6 习题 51
第3章 面向对象程序设计概述 53
3.1 程序设计语言 53
3.2 面向对象的基本概念 53
3.2.1 对象 54
3.2.2 类 54
3.2.3 消息和通信 55
3.2.4 关系 55
3.2.5 封装 56
3.2.6 继承 56
3.2.7 多态性 57
3.2.8 接口和组件 58
3.3 本章小结 58
3.4 习题 58
第4章 类和对象 59
4.1 成员 59
4.1.1 成员种类 59
4.1.2 成员访问限制 60
4.1.3 静态成员和非静态成员 61
4.1.4 常量字段和只读字段 63
4.2 方法 64
4.2.1 定义方法 64
4.2.2 方法的返回值 65
4.2.3 参数类型 66
4.2.4 方法的重载 69
4.3 类的特殊方法 70
4.3.1 构造函数和析构函数 70
4.3.2 属性 74
4.3.3 索引函数 76
4.3.4 操作符重载 79
4.4 this对象引用 82
4.5 本章小结 83
4.6 习题 84
第5章 继承和多态 86
5.1 继承 86
5.1.1 基类和派生类 86
5.1.2 隐藏基类成员 89
5.1.3 base关键字 90
5.1.4 对象的生命周期 91
5.2 多态性 92
5.2.1 虚拟方法和重载方法 92
5.2.2 抽象类和抽象方法 94
5.2.3 密封类和密封方法 95
5.3 本章小结 98
5.4 习题 98
第6章 委托和事件 100
6.1 委托和方法 100
6.1.1 通过委托来封装方法 100
6.1.2 委托的加减运算 101
6.1.3 传递委托对象 102
6.1.4 Delegate类型成员 104
6.2 匿名方法 105
6.2.1 定义和调用匿名方法 105
6.2.2 外部变量 106
6.3 事件处理 108
6.3.1 委托发布和订阅 108
6.3.2 事件发布和订阅 110
6.3.3 使用EventHandler类 113
6.3.4 在事件中使用匿名方法 114
6.4 本章小结 116
6.5 习题 116
第7章 文件管理 118
7.1 文件和流 118
7.1.1 文件类 119
7.1.2 Directory类和File类 123
7.1.3 目录类DirectoryInfo 128
7.1.4 文件类FileInfo 131
7.2 流的读写器 133
7.2.1 抽象类Stream 133
7.2.2 文件流类FileStream 135
7.2.3 内存数据流类MemoryStream 138
7.2.4 缓冲数据流类BufferedStream 140
7.2.5 字符数据的读写TextReader类和TextWriter类 146
7.2.6 二进制数据的读写BinaryReader类和BinaryWriter类 148
7.3 基于文件的对象持久性 151
7.3.1 实现对象持久性 151
7.3.2 .NET中的自动持久性支持 154
7.4 本章小结 158
7.5 习题 158
第8章 异常处理 160
8.1 异常的基本概念 160
8.1.1 程序异常 160
8.1.2 异常处理 160
8.2 异常的处理结构 162
8.2.1 try-catch语句 162
8.2.2 try-catch-finally语句 165
8.2.3 try-finally语句 168
8.2.4 throw语句 169
8.3 异常的传播 172
8.3.1 异常传播 172
8.3.2 Exception类和异常信息 172
8.4 自定义异常类 175
8.5 本章小结 177
8.6 习题 178
第9章 接口 180
9.1 接口的定义和使用 180
9.1.1 接口的定义 180
9.1.2 接口的实现 181
9.2 接口与多态 183
9.2.1 通过接口实现多态 183
9.2.2 显式方法和隐式方法的并存实现多态 184
9.3 接口和多继承 187
9.3.1 多继承概述 187
9.3.2 基于接口的多继承 187
9.3.3 解决二义性 189
9.4 接口与集合 191
9.4.1 集合型接口及其实现 191
9.4.2 列表、队列和堆栈 192
9.5 本章小结 199
9.6 习题 199
第10章 泛型 201
10.1 泛型类 204
10.1.1 泛型类的定义和使用 204
10.1.2 使用“抽象型”变量 205
10.1.3 使用多个类型参数 206
10.1.4 类型参数与标识 207
10.1.5 泛型的静态成员 209
10.2 类型限制 210
10.2.1 主要限制 210
10.2.2 次要限制 211
10.2.3 构造函数限制 212
10.3 泛型继承 212
10.4 泛型接口 215
10.4.1 泛型接口的定义 215
10.4.2 泛型接口的实现 216
10.4.3 避免二义性 218
10.4.4 泛型接口与泛型集合 219
10.5 泛型方法 224
10.5.1 泛型方法的定义和使用 224
10.5.2 泛型方法的重载 225
10.5.3 泛型方法与委托 226
10.6 本章小结 226
10.7 习题 227
参考文献 229