第1章 您是谁——C#编程入门 1
1.1 项目预览 1
1.2 建立Visual Studio 2008集成开发环境 1
1.3 编写第一个控制台应用程序 5
1.4 创建图形用户界面应用程序项目 8
1.4.1 创建WPF应用程序项目 8
1.4.2 创建Windows窗体应用程序项目 13
1.5 本章小结 16
1.6 项目实训1:您是谁 17
第2章 计算器——数据类型与表达式 20
2.1 项目预览 20
2.2 标识符 20
2.3 关键字 21
2.4 变量 22
2.5 数据类型及数值与字符串之间的转换 23
2.6 算术运算符及算术表达式、字符串连接符 26
2.7 赋值运算符、赋值表达式及赋值语句 28
2.8 运算符的优先级与结合性 29
2.9 自增和自减运算符 30
2.10 语句与方法 31
2.11 声明隐式类型局部变量 32
2.12 本章小结 32
2.13 项目实训2:简易计算器 33
第3章 求矩形面积周长——方法与作用域 35
3.1 项目预览 35
3.2 方法声明 35
3.3 方法调用 37
3.4 变量的作用域 38
3.4.1 局部变量的作用域 38
3.4.2 字段——类成员变量的作用域 38
3.5 方法签名与方法重载 39
3.6 编写方法 41
3.6.1 生成方法存根 41
3.6.2 代码重构——提取方法 42
3.7 调试、生成和发布应用程序 43
3.8 本章小结 46
3.9 项目实训3:用方法调用求矩形面积周长、实现计算器 46
第4章 打折计价——逻辑值与分支语句 52
4.1 项目预览 52
4.2 声明逻辑变量 52
4.3 关系运算符与关系表达式 53
4.4 逻辑运算符与逻辑表达式 54
4.5 程序基本控制结构 55
4.5.1 顺序结构 55
4.5.2 分支结构 55
4.5.3 循环结构 56
4.6 分支语句if-else 56
4.7 多分支语句switch 59
4.8 三目条件运算符 61
4.9 本章小结 63
4.10 项目实训4:打折计价、显示星期几、判断成绩等级 64
第5章 累加、阶乘和乘法表——循环语句 66
5.1 项目预览 66
5.2 循环语句while 66
5.3 复合赋值运算符 68
5.4 循环语句for 69
5.5 循环语句do-while 71
5.6 中断语句break和继续语句continue 72
5.7 嵌套循环 72
5.8 本章小结 73
5.9 项目实训5:计算累加、阶乘,生成乘法表 74
第6章 乘除运算——异常处理 77
6.1 项目预览 77
6.2 异常——运行时出错 77
6.3 异常种类与层次结构 79
6.4 异常处理代码块try-catch等 80
6.5 使用throw语句抛出异常 83
6.6 自定义异常类 85
6.7 启用或禁用整数运算溢出检查checked/unchecked 86
6.8 本章小结 88
6.9 项目实训6:带异常处理的乘除运算 90
第7章 创建圆和矩形类——类与对象 93
7.1 项目预览 93
7.2 定义类 93
7.3 构造函数及其重载 95
7.4 访问修饰符——控制类型及其成员的可访问性 98
7.4.1 类型可访问性 98
7.4.2 类型成员可访问性 98
7.5 静态成员和非静态成员 99
7.5.1 静态成员 99
7.5.2 非静态成员——实例成员 101
7.6 使用关键字const和readonly声明字段 102
7.7 静态类 103
7.8 分部类 104
7.9 属性成员 105
7.9.1 定义属性 105
7.9.2 使用属性 107
7.9.3 属性的局限 108
7.10 自动实现属性 108
7.11 直接设定属性构建对象 111
7.12 匿名类及其对象 112
7.13 本章小结 113
7.14 项目实训7:定义圆和矩形类,计算面积周长和个数 114
第8章 动物类派生——继承与多态 117
8.1 项目预览 117
8.2 继承与派生 117
8.3 派生类调用基类的构造函数 120
8.4 类声明的变量赋值 122
8.5 用new新建派生类成员以隐藏并替换基类同名成员 124
8.6 派生类用override重写基类virtual成员 126
8.7 多态性 128
8.8 用protected声明被派生类继承的受保护成员 129
8.9 理解扩展方法 132
8.10 本章小结 134
8.11 项目实训8:动物类派生马和鲸鱼、人类派生学生 136
第9章 实现抽象图形——抽象类与接口 139
9.1 项目预览 139
9.2 抽象方法与抽象类 139
9.3 密封类 142
9.4 密封方法与密封属性 142
9.5 接口类型 146
9.5.1 接口定义与实现 146
9.5.2 通过接口来引用类 148
9.5.3 显式实现接口 149
9.6 接口多重继承与实现多个接口 150
9.6.1 接口多重继承 150
9.6.2 类实现多个接口 150
9.7 本章小结 151
9.8 项目实训9:实现图形抽象类与接口 152
第10章 年龄计算——值与引用类型、装箱和拆箱 154
10.1 项目预览 154
10.2 值类型与引用类型 154
10.3 栈与堆 156
10.4 空值null与可空值类型 157
10.5 运算符??及其表达式 158
10.6 方法参数的值传递——单向传递 159
10.7 方法参数ref传递——双向传递 162
10.8 方法参数out传递——反向传递 163
10.9 object类型 164
10.10 装箱与拆箱 164
10.11 强制类型转换与is、as运算符 165
10.11.1 强制类型转换及其表达式 165
10.11.2 is运算符及其表达式 166
10.11.3 as运算符及其表达式 168
10.12 本章小结 169
10.13 项目实训10:年龄值与引用类型、装箱与拆箱 171
第11章 季节列举时分转换——枚举与结构 173
11.1 项目预览 173
11.2 声明枚举类型 173
11.3 更改枚举常量编号 174
11.4 应用枚举类型 174
11.5 选择枚举的基础类型 176
11.6 常用预定义结构类型 176
11.7 声明和使用结构类型 178
11.8 结构和类的区别 182
11.9 本章小结 186
11.10 项目实训11:星期、季节列举与时分秒转换 187
第12章 成绩统计——数组与集合 190
12.1 项目预览 190
12.2 数组声明及创建 190
12.2.1 声明数组变量 191
12.2.2 创建数组实例 192
12.2.3 访问数组元素 192
12.2.4 数组声明、创建、元素赋值三合一 193
12.3 多维数组 194
12.4 交错数组 195
12.5 隐式类型数组 196
12.6 使用foreach语句遍历数组 197
12.7 数组排序与复制 198
12.8 集合类概述 200
12.9 数组列表类 200
12.10 队列类 201
12.11 栈类 202
12.12 键/值对、DictionaryEntry结构与Hashtable类 203
12.13 有序表类 204
12.14 使用元素初值表创建集合 206
12.15 本章小结 206
12.16 项目实训12:统计平均成绩 208
第13章 商场计价——参数数组 211
13.1 项目预览 211
13.2 params参数数组 211
13.3 关于Console.WriteLine方法 214
13.4 params object[]参数对象数组 215
13.5 本章小结 217
13.6 项目实训13:找最大最小数、求和与商场计价 218
第14章 文件读写——资源使用与处置 221
14.1 项目预览 221
14.2 对象生存期与垃圾回收 221
14.3 析构函数 223
14.4 IDisposable接口及其Dispose方法 225
14.5 资源使用语句 227
14.6 数据流与文件读写 228
14.7 文件对话框 230
14.8 本章小结 232
14.9 项目实训14:文本文件读写 233
第15章 检索部门员工——索引器 235
15.1 项目预览 235
15.2 数组属性 235
15.3 索引器 237
15.4 对比索引器与数组 240
15.5 接口中的索引器及其实现 242
15.6 显式实现接口索引器 244
15.7 本章小结 245
15.8 项目实训15:检索部门员工、部门与主管相互检索 246
第16章 计算器——委托与事件 251
16.1 项目预览 251
16.2 委托类型 251
16.2.1 声明委托类型 252
16.2.2 实例化委托 252
16.2.3 调用委托 253
16.2.4 委托实例的加减运算 254
16.3 Lambda运算符、表达式及语句 256
16.4 用delegate声明匿名方法 257
16.5 事件 258
16.6 关于WPF用户界面事件 260
16.7 本章小结 261
16.8 项目实训16:运用委托与事件编写简易计算器 263
第17章 字符串出入队——泛型类与方法 266
17.1 项目预览 266
17.2 泛型类型 266
17.3 泛型方法 270
17.4 泛型类型参数约束 274
17.5 本章小结 276
17.6 项目实训17:字符串入队出队与字符串交换 277
第18章 生成星期数——枚举数与迭代器 279
18.1 项目预览 279
18.2 可枚举集合 279
18.3 枚举数 280
18.4 迭代器 283
18.5 本章小结 290
18.6 项目实训18:生成一星期各天数 291
第19章 成绩和选课查询——LINQ 293
19.1 项目预览 293
19.2 语言集成查询 293
19.3 查询表达式与查询语法 295
19.3.1 查询表达式子句 295
19.3.2 查询变量 296
19.4 查询种类 297
19.5 查询执行 298
19.5.1 延迟执行查询 298
19.5.2 强制立即执行查询 298
19.5.3 缓存立即执行的查询结果 299
19.6 方法语法 300
19.7 本章小结 304
19.8 项目实训19:成绩和选课查询 305
第20章 复数相加减——运算符重载 308
20.1 项目预览 308
20.2 运算符重载 308
20.3 重载等于与不等于运算符 312
20.3.1 内容相等与引用相等 312
20.3.2 相等比较 313
20.3.3 在复数结构中重载等于和不等于运算符 315
20.3.4 关于字符串相等比较 316
20.4 类型转换运算符 317
20.5 复数综合运算示例 320
20.6 本章小结 322
20.7 项目实训20:复数加减及相等比较 323
第21章 查询学生数据库——对象关系映射与LINQ to SQL 326
21.1 项目预览 326
21.2 ADO.NET概述 326
21.3 建立数据库 328
21.4 使用ADO.NET查询数据库 331
21.5 使用O/R设计器和LINQ to SQL查询数据库 333
21.6 自定义数据上下文类和实体类查询数据库 338
21.7 本章小结 342
21.8 项目实训21:查询学生数据库信息 344
第22章 增删库成绩——数据绑定与LINQ to SQL 347
22.1 项目预览 347
22.2 数据绑定 347
22.3 复杂数据绑定 350
22.4 添加学生课程成绩 354
22.5 更改学生成绩 358
22.6 删除学生成绩 360
22.7 处理数据库更新冲突 362
22.8 本章小结 363
22.9 项目实训22:学生成绩查询及增删改 364