第1章 绪论 1
本章目标 1
1.1 计算机处理 2
1.1.1 软件的分类 3
1.1.2 数字计算机 4
1.1.3 二进制数 5
1.2 硬件组件 7
1.2.1 计算机体系结构 7
1.2.2 输入/输出设备 9
1.2.3 主存储器和辅助存储器 9
1.2.4 中央处理单元 12
1.3 网络 13
1.3.1 网络连接 13
1.3.2 局域网和广域网 14
1.4 C#编程语言 17
1.4.1 一个C#程序 18
1.4.2 调试:启动程序和单步调试 20
1.4.3 程序结构 20
1.4.4 注释 21
1.4.5 标识符和保留字 22
1.5 C#的标识符 24
空白 24
1.6 程序开发 26
1.6.1 编程语言级别 26
1.6.2 编辑器、编译器和解释器 28
1.6.3 开发环境 29
1.6.4 语法和语义 30
1.6.5 错误 30
1.7 面向对象编程 31
1.7.1 问题求解 32
1.7.2 面向对象软件原理 33
关键概念总结 35
自测题 36
习题 37
编程项目 39
自测题解答 40
第2章 数据和表达式 43
本章目标 43
2.1 字符串 44
2.1.1 Write和WriteLine方法 44
2.1.2 字符串连接 45
2.1.3 转义序列 48
2.2 变量和赋值 49
2.2.1 变量 49
2.2.2 赋值语句 50
2.2.3 常量 52
2.3 原始数据类型 53
2.3.1 整数和浮点数 53
2.3.2 有符号整数和无符号整数 54
2.3.3 十进制数据类型 55
2.3.4 字符型 55
2.3.5 布尔型 56
2.4 表达式 56
2.4.1 算术运算符 57
2.4.2 运算符优先级 57
2.4.3 增量和减量运算符 60
2.4.4 赋值运算符 60
2.5 数据转换 61
转换技术 63
2.6 交互式程序 64
调试:断点和查看变量的内容 66
2.7 基于Windows的程序 67
2.7.1 基于事件的编程 67
2.7.2 处理事件 68
2.7.3 图形用户界面(GUI) 68
2.8 图形模型 69
2.8.1 坐标系统 69
2.8.2 表示颜色 70
2.9 第1个GUI程序 71
2.9.1 在程序中添加代码 74
2.9.2 Einstein应用程序的分析 75
2.10 绘制形状 76
Graphics类 76
关键概念总结 80
自测题 80
习题 80
编程项目 82
自测题解答 83
第3章 使用类和对象 85
本章目标 85
3.1 创建对象 86
3.1.1 字符串概述 86
3.1.2 别名 88
3.2 深入String和StringBuilder类 90
3.3 .NET体系结构和基类库 94
3.3.1 基类库 95
3.3.2 using声明 95
3.4 Random类 96
3.5 Math类 98
3.6 格式化输出 100
3.6.1 标准的数值格式化 100
3.6.2 定制的数值格式化 103
3.6.3 组合格式化 105
3.7 枚举类型 107
3.8 组件和容器 109
3.8.1 窗体 110
3.8.2 载入窗体 111
3.8.3 创建新窗体 111
3.8.4 在窗体设计器中访问窗体控件 112
3.8.5 在窗体中放置控件 112
3.8.6 显示和关闭Copyright窗体 113
3.8.7 显示Copyright窗体和使用Load事件 114
3.9 绘制线和Pen(画笔)的样式 114
3.9.1 Visual Studio中的枚举 115
3.9.2 Pens示例程序 116
3.9.3 客户矩形和设置屏幕高度 118
3.10 图像 118
标签示范程序 119
关键概念总结 120
自测题 120
习题 120
编程项目 121
自测题解答 122
第4章 编写类 123
本章目标 123
4.1 创建对象 124
4.1.1 在项目中增加类 124
4.1.2 实例数据 129
4.1.3 UML类图 129
4.2 封装 130
4.2.1 可见性修饰符 131
4.2.2 取值器和赋值器 132
4.3 方法的解析 132
4.3.1 return语句 133
4.3.2 参数 134
4.3.3 局部数据 135
4.3.4 银行账户示例 135
4.4 属性 139
编码标准 140
4.5 再论构造函数 140
4.5.1 调试:查看对象变量的内容 141
4.5.2 调试:Step Into、Step Out和Step Over 142
4.6 为图形化的图像使用类 142
4.7 BRUSH(画刷) 146
4.7.1 Hatch Brush(阴影刷) 147
4.7.2 Gradient Brush(梯度刷) 147
4.8 图形用户界面 148
4.9 按钮 149
4.9.1 在源文件中查找代码 150
4.9.2 手动添加事件 151
4.9.3 AcceptButton和CancelButton按钮 152
4.10 文本字段 152
4.10.1 代码中文本框的光标控制和选择部分 154
4.10.2 多行文本框 155
4.10.3 文本框中的控制字符 155
4.11 设置Tab键顺序 155
关键概念总结 156
自测题 157
习题 157
编程项目 157
自测题解答 158
第5章 条件语句和循环 159
本章目标 159
5.1 创建对象 162
5.1.1 相等运算符和关系运算符 163
5.1.2 逻辑运算符 164
5.2 if语句 165
5.2.1 if-else语句 167
5.2.2 使用块语句 171
5.2.3 条件语句运算符 173
5.2.4 嵌套if语句 173
5.3 比较数据 175
5.3.1 比较浮点数 175
5.3.2 比较字符 176
5.3.3 比较对象 176
5.4 switch语句 177
5.5 while语句 180
5.5.1 无限循环 183
5.5.2 嵌套循环 184
5.5.3 其他循环控制 187
5.6 do语句 187
5.7 for语句 189
5.8 foreach语句和数组的介绍 193
5.8.1 简单的文件I/O 194
5.8.2 比较循环 195
5.8.3 调试:Watch窗口 196
5.8.4 调试:Command窗口 196
5.9 用循环和条件语句绘图 197
5.10 判断事件源 199
5.11 对话框 201
5.11.1 使用对话框结果 203
5.11.2 MessageBox:系统提供的对话框 203
5.12 更多的按钮组件 205
5.12.1 复选框 205
5.12.2 单选按钮 208
5.12.3 文本框检验 210
5.12.4 事件处理程序的无限循环 212
关键概念总结 212
自测题 212
习题 213
编程项目 216
自测题解答 219
第6章 面向对象设计 221
本章目标 221
6.1 软件开发活动 222
6.2 确定类和对象 223
分配职责 224
6.3 静态类成员 224
6.3.1 静态变量 224
6.3.2 静态方法 225
6.4 类的关系 227
6.4.1 依赖性 227
6.4.2 同一个类的对象之间的依赖性 228
6.4.3 聚集 233
6.4.4 this引用 236
6.5 接口 237
IComparable接口 242
6.6 方法设计 242
6.6.1 方法分解 242
6.6.2 再论方法参数 246
6.6.3 ref关键字 249
6.6.4 out关键字 251
6.7 方法重载 251
6.8 类中的运算符重载 253
创建类库 253
6.9 Object Browse(对象浏览器) 259
6.10 测试 260
6.10.1 评审 260
6.10.2 缺陷测试 260
6.10.3 调试:模块级测试和改变程序顺序 262
6.10.4 调试:跟踪问题和Output窗口 262
6.11 GUI设计 264
6.12 面板和图片框 265
6.12.1 面板 265
6.12.2 图片框 266
6.12.3 在控件上绘图 266
6.13 选项卡控件 270
关键概念总结 271
自测题 271
习题 271
编程项目 272
自测题解答 274
第7章 数组 275
本章目标 275
7.1 数组元素 276
7.2 声明和使用数组 276
7.2.1 边界检查 278
7.2.2 初始化列表 282
7.2.3 数组作为参数 283
7.3 对象数组 284
7.4 命令行参数 291
7.5 可变长度参数列表 293
7.6 二维数组 296
多维数组 299
7.7 ArrayList类 299
7.7.1 指定ArrayList元素类型 302
7.7.2 ArrayList的效率 302
7.8 foreach循环 303
7.9 多边形和折线 304
7.9.1 Point和PointF类 304
7.9.2 Size和SizeF类 305
7.9.3 Rectangle和RectangleF类 305
7.9.4 为Size、Point和Rectangle使用ArrayList 305
7.9.5 用Point、PointF、Rectangle、RectangleF和Arrays绘图 306
7.10 鼠标事件 310
7.11 键事件 315
7.12 窗体特殊事件 318
关键概念总结 319
自测题 320
习题 320
编程项目 321
自测题解答 323
团队项目 324
第8章 继承 327
本章目标 327
8.1 创建子类 328
8.1.1 protected修饰符 331
8.1.2 base引用 332
8.1.3 多重继承 335
8.2 重写方法 335
影子变量 338
8.3 类层次 338
8.3.1 Object类 339
8.3.2 抽象类 340
8.3.3 接口继承 341
8.4 可见性 342
8.5 继承设计 344
限制继承 345
8.6 组件类继承 345
8.7 重写事件处理程序 347
8.8 扩展GUI组件 350
8.9 Timer类 356
关键概念总结 359
自测题 360
习题 360
编程项目 360
自测题解答 362
团队项目 362
第9章 多态 365
本章目标 365
9.1 晚绑定 366
9.2 使用继承的多态 366
9.3 使用接口的多态 375
9.4 排序 377
9.4.1 选择排序 377
9.4.2 插入排序 382
9.4.3 排序算法比较 383
9.5 查找 384
9.5.1 线性查找 384
9.5.2 二分查找 386
9.5.3 查找算法比较 388
9.6 多态的设计 388
9.7 系统支持的对话框 389
9.7.1 打开文件对话框(OpenFileDialog) 392
9.7.2 保存文件对话框(SaveFileDialog) 393
9.7.3 文件夹浏览对话框(FolderBrowserDialog) 393
9.7.4 颜色对话框(ColorDialog) 393
9.7.5 字体对话框(FontDialog) 393
9.7.6 页面设置对话框(PageSetupDialog) 394
9.7.7 打印对话框(PrintDialog) 394
9.8 滑块和数值上下调节计数器 395
9.9 系统注册表操作 397
关键概念总结 400
自测题 401
习题 401
编程项目 401
自测题解答 402
第10章 异常 403
本章目标 403
10.1 异常处理 404
10.2 未捕获的异常 404
10.3 try-catch语句 406
finally子句 409
10.4 异常传播 409
10.5 异常类层次 412
10.6 I/O异常 415
10.7 产生定制事件 418
10.7.1 创建委托(Delegate) 418
10.7.2 定义事件 418
10.7.3 产生事件 419
10.7.4 处理事件 419
10.7.5 回顾事件处理 420
10.8 工具提示和助记符 426
10.8.1 工具提示 426
10.8.2 助记符(快捷键) 427
10.8.3 禁用组件 427
10.9 列表框和组合框 429
各种控件示例 430
10.10 日历控件 433
10.11 状态栏 435
10.12 菜单 436
10.13 串行化 444
10.14 带滚动条的面板 445
10.15 带滚动条的文本框 447
10.16 拆分窗格 449
10.17 其他示例程序 452
关键概念总结 453
自测题 453
习题 453
编程项目 454
自测题解答 454
团队项目 455
第11章 递归 457
本章目标 457
11.1 递归地思考 459
11.1.1 无限递归 459
11.1.2 数学中的递归 460
11.2 递归编程 460
11.2.1 递归与迭代 461
11.2.2 直接递归与间接递归 462
11.3 使用递归 462
11.3.1 遍历迷宫 462
11.3.2 汉诺塔 466
11.4 图形中的递归 470
11.4.1 平铺图片 470
11.4.2 分形 472
11.5 打印 477
11.5.1 Print文档(PrintDocument) 477
11.5.2 打印机设置(PrinterSettings) 478
11.5.3 使用预览对话框(PrintPreviewDialog) 478
11.5.4 打印页 479
11.5.5 PrintPage事件处理程序 479
11.5.6 打印示例 480
关键概念总结 483
自测题 483
习题 484
编程项目 484
自测题解答 486
团队项目 487
第12章 集合和数据结构 489
本章目标 489
12.1 集合和数据结构 490
接口和实现分离 490
12.2 动态表示 490
12.2.1 动态结构 491
12.2.2 动态链表 491
12.2.3 其他动态列表表示 495
12.3 线性数据结构 496
12.3.1 队列 496
12.3.2 栈 498
12.4 非线性数据结构 500
12.4.1 树 500
12.4.2 图 501
12.5 C#集合类 501
12.6 为类添加定制索引器 505
关键概念总结 506
自测题 507
习题 507
编程项目 508
自测题解答 510
附录A 数值系统 513
A.1 位值 513
A.2 比10大的基 514
A.3 转换 516
A.4 快捷转换 517
附录B Unicode字符集 519
附录C 编码标准、软件工程和相关主题 521
C.1 质量问题 521
C.2 命名常规 522
C.3 编码规范 524
C.4 内部文档和样式 525
附录D Visual Studio安装指南 527
D.1 从Web上安装Visual Studio 527
D.2 Visual Studio的安装 529
D.3 启动Visual Studio 531
D.4 将Visual Studio的图标增加到桌面 532
D.5 设置命令行提示 533