第1章Visual C# 2012简介 1
1.1 C#概述 1
1.1.1 C#的产生与特点 1
1.1.2 C# 4.0新特性 2
1.2 .NET Framework概述 8
1.2.1 .NET Framework简介 8
1.2.2 C#与.NET Framework的关系 8
1.2.3 .NET Framework 4.5 9
1.3 Visual Studio 2012概述 11
1.3.1 Visual Studio 2012的新特性 11
1.3.2 Visual Studio 2012的安装环境与安装过程 14
1.3.3认识Visual Studio 2012集成开发环境 17
第2章 第一个Visual C# 2012程序 21
2.1编写Hello World程序 21
2.2代码详解 23
2.2.1程序结构 24
2.2.2命名空间 24
2.2.3 using语句 26
2.2.4声明类 28
2.2.5声明Main方法 28
2.2.6程序语句 29
2.2.7程序代码注释 30
2.3程序调试 33
2.3.1程序错误类型 33
2.3.2程序调试方法 34
2.4发布程序 36
第3章Visual C# 2012编程基础 39
3.1语句 40
3.2标识符 40
3.3关键字 42
3.4数据类型 43
3.4.1值类型 43
3.4.2引用类型 50
3.5类型转换 56
3.5.1隐式类型转换 56
3.5.2显式类型转换 59
3.5.3装箱 63
3.5.4拆箱 63
3.6常量和变量 64
3.6.1常量 65
3.6.2变量 65
3.6.3变量的命名规则 66
3.6.4变量类型 67
3.6.5变量作用域 68
3.7运算符 71
3.7.1算术运算符 71
3.7.2关系运算符 72
3.7.3逻辑运算符 73
3.7.4位运算符 74
3.7.5赋值运算符 75
3.7.6其他运算符 76
3.7.7运算符优先级 80
3.8运算符重载 82
3.8.1运算符工作方式 82
3.8.2运算符重载示例 83
3.9预处理器指令 85
3.9.1#define和#undef 85
3.9.2#if、#elif、#else和#endif 86
3.9.3#warning和#error 87
3.9.4#region和#endregion 88
3.9.5#line 89
3.9.6#pragma 、#pragma warning和#pragma checksum 91
第4章 流程控制语句 94
4.1选择语句 94
4.1.1 if语句 94
4.1.2 switch语句 97
4.2循环语句 98
4.2.1 while语句 99
4.2.2 do-while语句 99
4.2.3 for语句 101
4.2.4 foreach语句 102
4.3跳转语句 103
4.3.1 break语句 103
4.3.2 continue语句 104
4.3.3 goto语句 105
4.3.4 return语句 107
4.4异常处理语句 108
4.4.1 throw语句 110
4.4.2 try-catch语句 112
4.4.3 try-finally语句 115
4.4.4 try-catch-finally语句 116
第5章 类与对象 118
5.1面向对象编程 118
5.2类 119
5.2.1类的定义 119
5.2.2类的访问修饰符 120
5.2.3类的成员 122
5.2.4成员的访问修饰符 123
5.2.5类的实例 126
5.3常量 127
5.3.1静态常量 127
5.3.2动态常量 129
5.4字段 131
5.5属性 132
5.5.1属性的声明 133
5.5.2属性修饰符 134
5.5.3属性与字段的区别 136
5.6构造函数和析构函数 137
5.6.1构造函数 137
5.6.2析构函数 143
5.7方法 144
5.7.1方法的声明与调用 144
5.7.2方法的参数 146
5.7.3静态方法与非静态方法 151
5.7.4外部方法 151
5.7.5方法重载 152
5.8索引器 154
5.9类与结构的比较 156
第6章 继承与多态 160
6.1什么是继承 160
6.2基类和派生类 161
6.3与继承相关的关键字 163
6.3.1 base关键字——基类成员的访问 163
6.3.2 new关键字——基类成员的隐藏 164
6.3.3 virtual关键字和override关键字——虚拟与实现 166
6.3.4 virtual关键字与new关键字的区别 168
6.3.5 abstract关键字——抽象类 170
6.3.6 sealed关键字——密封类 172
6.4接口 174
6.4.1接口的定义 174
6.4.2接口的成员及其全权名 175
6.4.3接口成员的访问及其二义性 177
6.4.4接口的实现 179
6.5抽象类与接口 181
6.6多态性 185
第7章 委托与事件 186
7.1委托 186
7.1.1委托的声明 186
7.1.2委托的实例化及调用 187
7.1.3多播委托 189
7.1.4委托中的协变与逆变 192
7.1.5委托与接口 194
7.2事件 195
7.2.1事件的声明 196
7.2.2事件访问器 198
7.2.3事件的订阅与取消 199
7.2.4在派生类中引发基类事件 204
7.2.5实现接口事件 207
7.2.6使用字典存储事件实例 211
第8章数组与集合 215
8.1数组概述 216
8.2数组的种类 217
8.2.1一维数组 217
8.2.2多维数组 219
8.2.3交错数组 221
8.3数组元素的访问 224
8.4数组类 225
8.5数组的基本操作 226
8.5.1数组的遍历 226
8.5.2数组的清空 227
8.5.3数组的查找 229
8.5.4数组的排序 231
8.6数组作为参数 233
8.7动态数组 237
8.8集合类 240
8.8.1队列 243
8.8.2栈 245
8.8.3有序表 247
8.8.4哈希表 248
8.8.5字典 250
8.8.6 Lookup类 253
第9章 泛型 256
9.1使用泛型的原因 256
9.2泛型简介 258
9.3类型参数 261
9.3.1类型参数命名规则 261
9.3.2类型参数的约束 262
9.3.3类型参数约束的特殊情况 265
9.3.4类型参数默认值 266
9.4泛型类 268
9.5泛型接口 270
9.6泛型方法 275
9.7泛型委托 277
9.8运行时中的泛型 278
9.9泛型和数组 280
9.10泛型和属性 281
9.11 C++模板和C#泛型的区别 282
第10章 反射 283
10.1泛型概述 283
10.2反射中常用类 285
10.2.1 Assembly 285
10.2.2 Module 287
10.2.3 ConstructorInfo 288
10.2.4 MethodInfo 289
10.2.5 FieldInfo 290
10.2.6 EventInfo 292
10.2.7 PropertyInfo 293
10.2.8 ParameterInfo 294
10.2.9 CustomAttributeData 294
10.3访问自定义属性 298
10.4访问默认成员 300
10.5使用反射将委托挂钩 300
10.6反射的安全注意事项 305
第11章 字符串操作 307
11.1 System.String类 307
11.1.1声明字符串变量 307
11.1.2 String类的属性成员 309
11.1.3字符串的查看和比较 310
11.1.4分割字符串并获取子字符串 313
11.1.5字符串的插入、删除和大小写转换 314
11.1.6合并字符串 317
11.2格式化字符串 319
11.2.1格式化概述 320
11.2.2标准数值格式 320
11.2.3自定义数值格式 323
11.2.4标准日期时间格式化 327
11.2.5自定义日期时间格式化 330
11.2.6枚举类型格式化 333
11.3 StringBuilder类 335
第12章 文件与流 338
12.1 System.IO命名空间类 338
12.2 Path类 339
12.3用流读写文件 342
12.3.1 FileStream类 342
12.3.2 BinaryReader和BinaryW riter类 345
12.3.3 StreamReader和StreamWriter类 350
12.3.4序列化 352
12.4 File类和FileInfo类 354
12.4.1文件是否存在 355
12.4.2创建文件 355
12.4.3复制文件 357
12.4.4移动文件 359
12.4.5删除文件 360
12.4.6获取和设置文件基本信息 360
12.5 Directory类和DirectoryInfo类 362
12.5.1目录是否存在 363
12.5.2创建目录 365
12.5.3删除目录 367
12.5.4移动目录 367
12.5.5遍历目录 371
第13章 多线程编程 376
13.1多线程的相关概念 376
13.2 Thread类 377
13.2.1线程的创建和启动 378
13.2.2线程的挂起、恢复和终止 381
13.2.3线程的状态 384
13.2.4线程优先级 386
13.3线程的同步 388
13.4多线程的自动管理 395
13.4.1线程池 395
13.4.2计时器 398
第14章 Windows窗体和控件 401
14.1 Windows窗体 401
14.1.1创建Windows窗体 401
14.1.2在项目中添加窗体 403
14.2 Windows窗体控件 405
14.2.1控件分类 405
14.2.2控件的基本操作 407
14.2.3命令控件 409
14.2.4设置选项控件 412
14.2.5列表选择控件 415
14.2.6编辑文本控件 419
14.2.7显示信息控件 422
14.2.8日期选择控件 424
14.2.9弹出式信息控件 427
14.2.10图像控件 429
14.2.11容器控件 430
14.3对话框控件 432
14.3.1 ColorDialog控件 432
14.3.2 FontDialog控件 433
14.3.3 OpenFileDialog控件 434
14.3.4 PrintDialog控件 434
14.3.5 FolderBrowserDialog控件 435
14.3.6 SaveFileDialog控件 435
14.4菜单和工具栏控件 436
14.4.1 MenuStrip控件 436
14.4.2 ContextMenuStrip控件 437
14.4.3 ToolStrip控件 438
14.4.4 Tool StripContainer控件 438
第15章 数据库编程 440
15.1 ADO.NET概述 440
15.1.1数据库与ADO.NET 440
15.1.2关于ADO.NET的类 443
15.1.3 Windows应用程序与ADO.NET 450
15.2 ADO.NET应用 453
15.2.1用DataReader从数据库中读取数据 453
15.2.2用DataSet从数据库中读取数据 454
15.2.3更新数据库的内容 457
15.2.4访问数据集中的多个表 459
15.2.5深入理解ADO.NET中的SQL语句 461
15.2.6数据绑定 466
第16章 网络通信编程 471
16.1 .NET Framework中的请求和响应 471
16.2 TCPIP协议 472
16.2.1 IP协议 473
16.2.2 TGP协议 473
16.3使用TcpListener和TcpClient收发信息 474
16.3.1同步、异步、阻塞和非阻塞 474
16.3.2使用TcpListener与TcpClient 475
16.3.3使用Socket类代替TcpListener和TcpClient 479
16.4典型的网络应用 483
16.4.1下载网页 483
16.4.2上传和下载文件 486
16.4.3接收电子邮件信息 489
16.4.4实现ping命令 494
第17章异步编程 504
17.1异步编程概述 504
17.1.1开始异步操作 504
17.1.2结束异步操作 505
17.2异步调用的常用方法 506
17.2.1使用EndOperationName方法 506
17.2.2使用AsyncWaitHandle对象 508
17.2.3使用轮询 510
17.2.4使用AsyncCallback委托 512
17.3异步功能——Visual C # 2012新特性 515
17.4演练编写异步程序 517
参考文献 528