第1章 C#语言初步 1
1.1 C#语言综述 1
1.1.1 C#和Microsoft.NET的关系 1
1.1.2 C#和Java的比较 2
1.1.3 C#与C/C++的关系 3
1.1.4 C#和VB的关系 4
1.2 C#语言新特性 4
1.3 编写C#应用程序 8
1.3.1 开发C#应用程序的步骤 9
1.3.2 编写最简单的C#程序 9
1.3.3 使用名字空间的示例程序 10
1.3.4 访问传给应用程序的命令行参数的程序 12
第2章 Visual Studio.NET 7.0的安装与配置 14
2.1 安装Visual Studio.NET 7.0 14
2.1.1 安装前的准备 14
2.1.2 安装过程 15
2.2 集成开发环境 22
2.3 界面组成 24
2.3.1 菜单 24
2.3.2 工具栏 25
2.3.3 任务列表窗口 26
2.3.4 工具箱 26
2.3.5 代码编辑窗口 27
2.3.6 其他窗口 27
2.4 系统配置 29
2.4.1 配置工具栏 29
2.4.2 自定义工具箱 30
2.4.3 使用Processes窗口 31
第3章 数据类型 32
3.1 两种数据类型的区别 32
3.2 数值类型分类 35
3.3 简单类型 35
3.3.1 byte类型 36
3.3.2 sbyte类型 37
3.3.3 short类型 39
3.3.4 ushort类型 40
3.3.5 int类型 41
3.3.6 uint类型 41
3.3.7 long类型 42
3.3.8 ulong类型 43
3.3.9 float类型 44
3.3.10 double类型 46
3.3.11 bool类型 47
3.3.12 char类型 48
3.3.13 decimal类型 49
3.4 struct类型 51
3.5 enum(枚举)类型 54
3.6 引用类型 56
3.6.1 对象类型 57
3.6.2 类类型 57
3.6.3 接口 60
3.6.4 代表元 65
3.6.5 对象类型 67
3.6.6 字符串类型 68
3.6.7 数组类型 70
3.7 类型参考表 72
3.7.1 内建类型表 72
3.7.2 整数类型表 73
3.7.3 浮点类型表 73
3.7.4 默认值表 73
3.7.5 数值类型表 74
3.7.6 隐式数字转换 74
3.7.7 显式数字转换 75
3.8 通过类型定义变量 76
3.9 统一系统类型 77
第4章 数组 79
4.1 数组的基本概念 79
4.2 数组声明 80
4.2.1 一维数组的声明 80
4.2.2 多维数组的声明 81
4.2.3 锯齿数组的声明 81
4.3 数组初始化 83
4.3.1 创建数组空间 83
4.3.2 数组初始化 83
4.4 访问数组成员 85
4.4.1 使用普通方法访问数组成员 85
4.4.2 使用foreach语句循环访问数组 85
4.4.3 访问数组成员的综合应用 86
4.5 数组是对象 87
4.6 传递数组参数 88
4.6.1 传递一维数组参数 88
4.6.2 传递多维数组参数 89
4.6.3 使用ref和out传递数组 90
第5章 控制流程语句 93
5.1 选择语句 93
5.1.1 If条件语句 93
5.1.2 Switch语句 95
5.1.3 C#和C中Switch语句的差别 97
5.2 循环语句 99
5.2.1 for循环 99
5.2.2 while循环 100
5.2.3 do-while循环 101
5.3 跳出、继续和转向语句 102
5.3.1 Break语句 102
5.3.2 Continue语句 102
5.3.3 Goto语句 103
5.4 foreach语句 104
5.4.1 foreach语句的语法规则 104
5.4.2 用foreach语句遍历数据列表 104
5.4.3 用foreach语句读取所有环境变量 105
5.4.4 foreach语句应用于数组 106
5.4.5 对集合使用foreach语句 106
第6章 用户定义类型转换 112
6.1 Implicit(隐式)类型转换 112
6.1.1 Implicit(隐式)转换实现 113
6.1.2 Implicit(隐式)转换示例 113
6.2 Explicit(显式)类型转换 114
6.2.1 Explicit(显式)转换的实现 114
6.2.2 Explicit(显式)转换示例 114
6.3 Operator(操作符)类型转换 115
6.3.1 类型转换实现 115
6.3.2 类型转换解释 116
6.3.3 类型转换示例 116
6.4 用户定义类型转换综合示例 117
第7章 操作符和操作符重载 121
7.1 操作符 121
7.1.1 操作符分类 121
7.1.2 算术溢出 122
7.1.3 []操作符 122
7.1.4 ()操作符 123
7.1.5 .操作符 124
7.1.6 +操作符 124
7.1.7 -操作符 125
7.1.8 ?操作符 126
7.1.9 /操作符 126
7.1.10 %操作符 127
7.1.11 ?操作符 127
7.1.12 |操作符 128
7.1.13 ^操作符 128
7.1.14 !操作符 129
7.1.15 ~操作符 129
7.1.16 =操作符 130
7.1.17 <操作符 131
7.1.18 >操作符 131
7.1.19 ?:.操作符 131
7.1.20 ++操作符 133
7.1.21 ——操作符 133
7.1.22 ??操作符 134
7.1.23 ‖操作符 135
7.1.24 <<操作符 136
7.1.25 >>操作符 137
7.1.26 ═操作符 138
7.1.27 !=操作符 139
7.1.28 <=操作符 140
7.1.29 >=操作符 140
7.1.30 +=操作符 141
7.1.31 -=操作符 141
7.1.32 ?=操作符 142
7.1.33 /=操作符 143
7.1.34 %=操作符 143
7.1.35 ?=操作符 144
7.1.36 |=操作符 144
7.1.37 ^=操作符 145
7.1.38 <<=操作符 146
7.1.39 >>=操作符 146
7.1.40 ->操作符 147
7.2 操作符重载 148
7.2.1 可重载操作符 148
7.2.2 操作符重载示例 148
7.3 操作符关键词 153
7.3.1 as关键词 153
7.3.2 is操作符 154
7.3.3 new操作符 156
7.3.4 new修饰符 158
7.3.5 sizeof操作符 160
7.3.6 typeof关键词 161
7.3.7 true关键词 163
7.3.8 false关键词 163
7.3.9 stackalloc关键词 164
第8章 代表元 166
8.1 代表元的语法规则 166
8.2 代表元的使用说明 166
8.3 代表元应用示例 168
8.3.1 代表元应用示例一 168
8.3.2 代表元应用示例二 171
8.3.3 代表元和事件 173
8.3.4 代表元和接口 173
第9章 结构和索引 174
9.1 结构 174
9.1.1 结构的声明 174
9.1.2 结构与类 175
9.1.3 堆和堆栈 176
9.1.4 构造和继承 177
9.1.5 属性和结构 178
9.2 索引 178
9.2.1 索引的声明 179
9.2.2 索引声明的细节问题 179
9.2.3 索引声明示例 180
9.2.4 声明索引属性 181
9.3 属性和索引的比较 184
9.4 接口索引 185
9.4.1 接口索引的语法规则 185
9.4.2 接口索引的特点 185
9.4.3 接口索引示例 185
9.5 对象索引机制 187
9.6 创建索引属性 190
第10章 修饰符 193
10.1 类修饰符 193
10.2 成员修饰符 194
10.3 存取修饰符 195
10.3.1 存取属性级别 195
10.3.2 存取属性范围 196
10.3.3 使用存取属性的限制 197
10.4 修饰符使用详解 200
10.4.1 internal修饰符 200
10.4.2 private修饰符 201
10.4.3 protected修饰符 202
10.4.4 public修饰符 203
10.4.5 abstract修饰符 204
10.4.6 const修饰符 206
10.4.7 event修饰符 208
10.4.8 extern修饰符 214
10.4.9 override修饰符 215
10.4.10 readonly修饰符 217
10.4.11 sealed修饰符 218
10.4.12 static修饰符 219
10.4.13 virtual修饰符 220
第11章 名字空间 224
11.1 名字空间概述 224
11.2 Namespace关键词 225
11.2.1 使用Namespace关键词声明名字空间 225
11.2.2 使用Namespace关键词 225
11.3 Using关键词 226
11.3.1 Using关键词语法规则 226
11.3.2 使用Using关键词 227
11.4 C#和Java的名字空间 228
11.5 C#堆栈实现 229
11.6 名字空间的应用 231
11.6.1 在名字空间中包装类 231
11.6.2 在客户应用程序中使用名字空间 232
11.6.3 增加多个类到名字空间 234
第12章 库和集合 235
12.1 创建库 235
12.2 编译客户端库 236
12.3 使用动态链接库 238
12.4 集合 240
第13章 事件和接口 246
13.1 事件 246
13.1.1 事件机制的引入 246
13.1.2 事件应用综合示例 247
13.1.3 定义事件 250
13.1.4 引用事件 250
13.1.5 绑定事件 250
13.1.6 事件和继承 250
13.2 接口 250
13.2.1 语法规则 251
13.2.2 接口访问器 251
13.2.3 接口属性 251
13.3 显式实现接口成员 253
13.4 事件和接口的关系 257
第14章 类和方法 260
14.1 构造函数和析构函数 260
14.2 类的属性 261
14.3 使用索引功能访问类 262
14.4 在类中实现事件处理 264
14.5 为类添加方法 266
14.5.1 方法参数 266
14.5.2 覆盖方法 268
14.5.3 方法屏蔽 270
14.6 Main方法 272
14.6.1 返回值 272
14.6.2 命令行参数 274
14.7 条件方法 275
14.8 Versioning 278
第15章 属性 280
15.1 属性的声明 280
15.1.1 声明属性 280
15.1.2 实例、静态和只读属性 282
15.2 在代码中使用属性 283
15.2.1 属性类参数 283
15.2.2 Attribute属性的参数 284
15.2.3 通过映射访问属性 284
15.2.4 使用属性类 284
15.3 属性访问器 289
15.3.1 语法规则 289
15.3.2 get访问器 289
15.3.3 set访问器 290
15.3.4 属性访问器示例 291
15.4 应用示例 295
15.4.1 示例1:声明和使用可读可写属性 295
15.4.2 示例2:定义抽象属性及在子类中覆盖这些属性 296
第16章 装拆箱转换 301
16.1 装箱 301
16.1.1 装箱概述 301
16.1.2 装箱转换 302
16.1.3 装箱转换示例 302
16.2 拆箱 303
16.2.1 拆箱概述 303
16.2.2 拆箱转换 304
16.2.3 拆箱转换示例 304
第17章 线程和进程 306
17.1 线程 306
17.1.1 控制线程的方法 306
17.1.2 多线程设计 308
17.1.3 多线程同步 312
17.2 进程 317
17.2.1 启动、停止进程 318
17.2.2 获取进程信息 319
第18章 ADO对象与非托管COM对象间的交互访问 323
18.1 ADO对象 323
18.2 非托管COM对象之间交互访问 325
18.2.1 产生非托管COM类容器 326
18.2.2 在C#代码中产生非托管COM对象 327
18.2.3 在C#中声明非托管COM接口 328
18.2.4 在C#中查询接口QueryInterface 330
18.2.5 综合示例 330
18.3 用C#创建Web应用程序 335
附录 Microsoft.NET术语 345