第Ⅰ部分 C#语法基础 2
第1章 初识编程 2
1.1 C#简介 2
1.2 Visual Studio开发环境 3
1.3 认识程序 4
1.3.1 创建项目 4
1.3.2 编写代码 5
1.3.3 运行程序 7
1.4 编译 7
1.5 二进制 8
1.5.1 二进制转换为十进制 9
1.5.2 十进制转换为二进制 10
1.6 数据和内存 13
第2章 变量 15
2.1 整型变量 16
2.1.1 声明整型变量 16
2.1.2 int型变量的取值范围 20
2.1.3 short型 21
2.1.4 long型 21
2.1.5 无符号型 21
2.1.6 整数类型小结 21
2.1.7 溢出 22
2.2 实数型变量 23
2.3 字符 24
2.3.1 字符和字符串 25
2.3.2 字符型变量和字符串变量 26
2.3.3 字符串的输出 27
2.3.4 字符串的读取 27
2.3.5 ASCII编码和Unicode编码 28
2.3.6 转义字符 32
2.3.7 @控制符 33
2.3.8 +运算符 33
2.4 变量的格式化输出 34
2.5 变量的命名规则 37
2.6 常量 38
2.7 关键字(Keyword) 39
2.8 深化练习:交换两个变量的值 40
第3章 运算符和表达式 43
3.1 算术运算符 44
3.2 自增、自减运算符 46
3.3 赋值运算符 48
3.4 优先级 49
3.5 类型转换 50
3.5.1 隐式转换 50
3.5.2 显式转换 52
3.5.3 字符串和数值间的转换 53
第4章 流程控制 55
4.1 算法的概念 56
4.2 顺序结构 57
4.3 逻辑表达式 59
4.3.1 关系运算符 59
4.3.2 逻辑运算符 61
4.3.3 布尔变量 63
4.4 选择结构 64
4.4.1 if语句 64
4.4.2 switch语句 70
4.4.3 条件表达式 73
4.4.4 深化练习:三个变量排序 74
4.5 循环结构 75
4.5.1 while语句 75
4.5.2 do-while语句 80
4.5.3 for语句 82
4.6 break语句和continue语句 84
4.7 循环语句深化练习:分形图 85
第5章 枚举、结构体和数组 88
5.1 枚举 88
5.2 结构体 92
5.3 数组 94
5.3.1 一维数组 94
5.3.2 foreach循环语句 97
5.3.3 二维数组 97
5.3.4 可变数组 99
第6章 函数 101
6.1 为什么需要函数 101
6.2 定义函数 102
6.3 返回值 105
6.4 参数 107
6.4.1 值传递 107
6.4.2 地址传递 108
6.4.3 引用型参数(ref) 109
6.4.4 输出型参数(out) 111
6.4.5 参数匹配 112
6.5 递归调用 113
6.6 变量的作用域 116
6.6.1 局部变量 116
6.6.2 程序块中的局部变量 117
第7章 面向对象编程:类和对象(一) 119
7.1 背景 119
7.2 面向对象的基本概念 120
7.3 定义类 122
7.4 声明对象 125
7.5 属性 127
7.6 构造函数 129
7.7 析构函数和垃圾回收 132
7.8 实例演练:Time类 133
第8章 面向对象编程:类和对象(二) 137
8.1 以对象为成员 137
8.2 静态成员 138
8.2.1 静态变量 138
8.2.2 静态函数 141
8.3 常量成员 142
8.3.1 const常量 142
8.3.2 readonly常量 144
8.4 重载(Overload) 146
8.4.1 函数重载 146
8.4.2 构造函数的重载 148
8.4.3 运算符重载 149
8.5 this关键字 153
8.6 索引 154
8.7 值类型和引用类型 157
8.7.1 值类型变量 158
8.7.2 引用型变量 159
8.7.3 引用型变量和垃圾回收器 160
8.8 引用符和对象的区别 160
8.9 声明对象数组 162
8.10 类视图 162
第9章 面向对象编程:继承 163
9.1 继承概述 163
9.2 由基类创建派生类 164
9.3 protected成员 167
9.4 虚函数的重写 170
9.5 普通函数的隐藏 172
9.6 base关键字 173
9.7 抽象类和抽象函数 174
9.8 密封类和密封函数 175
9.9 派生类的构造函数 176
9.10 万类之源:Object 180
第10章 面向对象编程:多态性 182
10.1 派生类的对象和基类的关系 182
10.2 多态性的概念 182
10.3 多态性的应用 183
10.4 is运算符 186
10.5 向下类型转换 187
10.6 接口 188
10.7 类关系图 192
第11章 .NET框架基本概念 193
11.1 如何理解.NET框架 193
11.2 C#和.NET的关系 194
11.3 中间语言 194
11.4 强数据类型 195
11.5 类型的判定 197
11.5.1 sizeof运算符 197
11.5.2 typeof运算符 197
11.5.3 GetType()函数 197
11.5.4 is运算符 198
11.6 命名空间 199
11.7 装箱和拆箱 202
11.8 对象的相等 204
第12章 异常 208
12.1 异常概述 208
12.2 捕获异常——try-catch结构 209
12.3 finally块——try-catch-finally结构 210
12.4 抛出异常——throw语句 211
12.5 .NET中的异常类 212
12.6 异常类的属性 214
12.7 自定义异常 215
第Ⅱ部分 Windows编程 218
第13章 Windows窗体编程(一) 218
13.1 窗体(Form) 218
13.2 按钮(Button) 223
13.3 标签(Label) 226
13.4 超链接标签(LinkLabel) 227
13.5 文本框(TextBox) 228
13.6 单选按钮(RadioButton) 230
13.7 复选框(CheckBox) 231
13.8 数字输入框(NumericUpDown) 233
13.9 群组框(GroupBox) 235
13.10 面板(Panel) 237
第14章 Windows窗体编程(二) 245
14.1 鼠标事件处理 245
14.2 键盘事件处理 249
14.3 图形框(PictureBox) 252
14.4 列表框(ListBox) 254
14.5 复选列表框(CheckListBox) 256
14.6 下拉式列表框(ComboBox) 259
14.7 列表视图(ListView) 261
14.8 树状视图(TreeView) 266
14.9 控件布局 270
第15章 Windows窗体编程(三) 277
15.1 菜单 277
15.1.1 主菜单(MainMenu) 277
15.1.2 关联菜单(ContextMenu) 284
15.2 工具栏(ToolStrip) 285
15.3 对话框 289
15.3.1 另存为对话框(SaveFileDialog) 289
15.3.2 打开文件对话框(OpenFileDialog) 291
15.3.3 字体对话框(FontDialog) 293
15.3.4 颜色对话框(ColorDialog) 294
15.3.5 自定义对话框 295
15.4 多文档界面 296
15.5 Windows窗体类的层次结构 302
第Ⅲ部分 .NET进阶 306
第16章 委托与事件 306
16.1 委托 306
16.2 多播委托 311
16.3 匿名函数 312
16.4 事件处理机制 313
16.4.1 事件处理机制的原理 313
16.4.2 自定义事件 316
第17章 绘图 321
17.1 概述 321
17.2 像素和坐标系 322
17.3 颜色 322
17.4 Graphics类 324
17.5 画笔(Pen) 325
17.6 画刷(Brush) 326
17.7 路径(Path) 329
17.8 OnPaint()方法 331
17.9 坐标变换 332
17.9.1 平移变换 332
17.9.2 旋转变换 334
17.9.3 伸缩变换 335
17.9.4 在滚动窗口中绘图 336
17.10 字体(Font) 341
17.11 显示图像 344
17.11.1 Image类 344
17.11.2 Bitmap类 345
17.11.3 Metafile类 346
第18章 文件和流 348
18.1 文件系统 348
18.1.1 File类和FileInfo类 348
18.1.2 关于文件的异常 350
18.1.3 Directory类和DirectoryInfo类 351
18.1.4 Path类 353
18.1.5 Environment类 354
18.2 基于流的文件操作 356
18.2.1 FileStream类 357
18.2.2 关于流的异常 359
18.2.3 用流读写文本文件 363
18.2.4 用流读写二进制文件 365
第19章 字符串和正则表达式 368
19.1 String类 368
19.1.1 复制字符串 369
19.1.2 比较字符串 371
19.1.3 验证字符串首尾 373
19.1.4 定位字符或子串 374
19.1.5 截取子串 377
19.1.6 拆分字符串 378
19.1.7 更改大小写 378
19.1.8 修改字符串 379
19.1.9 插入格式化变量 379
19.2 StringBuilder类 380
19.3 Char类 384
19.4 正则表达式 385
19.4.1 通配符 385
19.4.2 可选字符集 386
19.4.3 或 387
19.4.4 非 388
19.4.5 数量限定符 388
19.4.6 定位符 393
19.4.7 Regex类的函数 395
19.4.8 深化练习:验证用户输入 397
第20章 特性、程序集和反射 398
20.1 特性 398
20.1.1 使用特性 398
20.1.2 自定义特性 400
20.2 程序集 404
20.2.1 认识程序集 405
20.2.2 程序集的结构 412
20.2.3 私有程序集和共享程序集 413
20.2.4 程序集的特性 413
20.3 反射 416
20.3.1 获取类型信息(Type类) 416
20.3.2 获取程序集信息(Assembly类) 418
20.3.3 动态加载类型 419
第21章 多线程 422
21.1 线程的概念 422
21.2 Thread类 423
21.3 线程的优先级 427
21.4 线程的插入 431
21.5 线程的状态 433
21.6 线程的同步 434
21.6.1 线程同步的概念 434
21.6.2 互锁(Interlocked类) 436
21.6.3 管程(Monitor类) 438
21.6.4 互斥体(Mutex类) 443
21.6.5 死锁 446
21.7 线程池 449
第22章 集合 453
22.1 集合概述 453
22.2 Array类 454
22.3 ArrayList类 455
22.4 Stack类 459
22.5 Queue类 461
22.6 SortedList类 463
22.7 Hashtable类 465
第23章 泛型 473
23.1 泛型的概念 473
23.2 泛型集合类 476
23.2.1 List〈T〉类 477
23.2.2 Stack〈T〉类 477
23.2.3 Queue〈T〉类 478
23.3 类型约束 478