前言
C#发展路线图
C#4.0新特性总述
为何写作本书
本书面向的读者
如何阅读本书
致谢
第一部分:准备篇 1
第1章 .NET体系结构 1
1.1 .NET框架概述 3
1.2 .NET的平台无关性 4
1.3公共语言运行时(CLR) 5
1.4 通用类型系统(CTS) 6
1.4.1值类型和引用类型 7
1.4.2装箱和拆箱 8
1.5 公共语言规范(CLS) 10
1.6 语言的互操作性 11
1.4即时编译(JIT) 12
1.5中间语言(CIL) 13
1.6基类库(BCL) 14
第2章 从“Hello World!”开始 15
2.1一个简单的C#程序 15
2.2编译和运行程序 16
2.2.1在Visual Stuido 2010中编译和运行 16
2.2.2通过命令行编译和运行 17
2.3详细介绍 21
2.4小结 25
第二部分:语法篇 26
第3章 标识符和关键字 26
3.1 标识符 26
3.2 关键字 27
3.3 标识符的命名约定 30
3.4 小结 30
第4章 变量、常量和类型 31
4.1变量 31
4.1.1给变量命名 32
4.1.2声明变量 32
4.1.3变量的初始化 33
4.1.4 类型推断 35
4.1.5变量的作用域 36
4.2常量 40
4.3C#数据类型 40
4.3.1内置的值类型 42
4.3.2 内置的引用类型 52
4.3.3指针类型 59
4.3.4 Nullable类型 60
4.3.5 dynamic类型 61
4.4 进阶阅读:关于动态语言运行时(DLR) 63
第5章 类型转换 66
5.1隐式类型转换 66
5.1.1 数值类型 68
5.1.2 引用类型 69
5.1.3 装箱 70
5.2 显式类型转换 71
5.2.1数值类型 73
5.2.2溢出检查 73
5.2.3引用类型 75
5.2.4拆箱 76
5.3 as和is运算符 76
第6章 表达式和运算符 83
6.1 表达式 83
6.2 运算符的类型 84
6.3 运算符的优先级 85
6.4 算术运算符 86
6.5 求余运算符 87
6.6 递增运算符和递减运算符 88
6.7 关系和类型检测运算符 90
6.8 相等性判断运算符 91
6.9 条件运算符 93
6.10 逻辑运算符 95
6.11 位运算符 96
6.12 赋值运算符 97
6.13 typeof运算符 99
6.14 运算符重载 100
6.14.1 运算符重载 101
6.14.2 可重载的运算符 102
第7章 语句 103
7.1 什么是语句 103
7.2 程序的三种结构 103
7.2.1 顺序结构 104
7.2.2 分支结构 104
7.2.3 循环结构 105
7.3 条件语句 106
7.3.1 if语句 106
7.3.2 switch语句 110
7.4 跳转语句 112
7.4.1 break语句 112
7.4.2 continue语句 114
7.4.3 return语句 115
7.4.4 throw语句 116
7.4.5 goto语句 116
7.4.6 default语句 117
7.5 标签语句 117
7.5.1 标签 118
7.5.2 标签语句的有效范围 118
7.6 循环语句 118
7.6.1 while循环 119
7.6.2 do…while循环 120
7.6.3 for循环 121
7.6.4 foreach…in循环 123
7.7 using语句 124
第8章 方法 127
8.1 方法的构成 127
8.2 局部变量和常量 128
8.3 方法的调用 130
8.4 返回值 131
8.5 参数 132
8.5.1 形参 132
8.5.2 实参 133
8.5.3 新特性:命名和可选参数 134
8.6 四种类型的参数 139
8.6.1 按值传递参数 139
8.6.2 按引用传递参数,关键字:ref 142
8.6.3 输出参数,关键字:out 145
8.6.4 参数数组,关键字:params 148
8.7 栈帧 150
8.8 递归 151
8.9 方法的重载 152
8.10静态方法 154
第9章 类 156
9.1 类是什么 156
9.2 “Hello World”程序回顾 157
9.3 类的声明 158
9.4 类的成员 159
9.4.1 字段 160
9.4.2 静态字段 161
9.4.3 方法 163
9.4.4 字段的初始化 163
9.4.5 属性 165
9.5 类的实例:对象 177
9.6 实例化中的内存分配 178
9.7 实例的成员 179
9.8 this关键字 179
9.9 访问修饰符 181
9.10 访问类的成员 182
9.10.1 从类内部访问成员 182
9.10.2 从类外部访问成员 183
9.10.3 从类外部访问静态成员 184
9.11 构造函数 185
9.12 对象初始化列表 193
9.13 析构函数 196
9.14 只读字段和常数 198
9.15 索引器 200
9.16 分部类型和分部方法,修饰符:partial 201
9.16.1 分部类 202
9.16.2 分部方法 204
9.17 注释 208
9.17.1 行注释 208
9.17.2 块注释 210
9.17.3 XML文档注释 211
第10章 继承 215
10.1 类的继承 215
10.2 访问继承的成员 217
10.3 使用new修饰符隐藏基类的成员 219
10.4 访问基类的成员 221
10.5 类的初始化顺序 222
10.6 在派生类中指定基类构造函数 224
10.7 类的访问修饰符 229
10.8 跨程序集的继承 229
10.9 密封类 231
10.10 静态类 232
10.11 扩展方法 234
10.12 派生类型的向上转型 236
第11章 多态 238
11.1 重载方法 239
11.2 虚方法 243
11.3 覆写方法 244
11.4 覆写标记为override的方法 246
11.5 抽象类及抽象方法 249
第12章 接口 252
12.1 定义接口 253
12.2 声明和实现接口 254
12.3 基类中的实现作为接口实现 258
12.4 实现多个接口 259
12.5 实现具有相同成员的接口 261
12.6 显式接口成员实现 263
12.7 调用显式接口成员实现 265
12.8 接口的派生 267
第13章 结 构 269
13.1 什么是结构 269
13.2 结构是值类型 270
13.3 给结构赋值 273
13.4 构造函数 275
13.4.1 实例构造函数 275
13.4.2 静态构造函数 277
13.5 多态和可继承性 279
13.6 装箱和拆箱 280
13.7 结构和类的对比 281
13.7.1字段初始化 282
13.7.2性能 283
13.7.3结构和类的适用场合分析 286
第14章 枚 举 287
14.1 什么是枚举 287
14.2 设置枚举的底层数据类型 291
14.3 显式设置枚举的成员常量值 292
14.4 使用标志枚举 294
14.5一些使用建议 296
第15章 委 托 298
15.1 什么是委托 298
15.2 委托是引用类型 299
15.3 委托的声明和实例化 300
15.4 委托的组合 302
15.5 为委托添加一个方法 304
15.6 从委托中删除一个方法 305
15.7 委托在回调中的应用 307
15.8 委托中的协变和逆变 309
15.9 匿名方法 312
15.10 λ表达式 315
第16章 事 件 318
16.1 什么是事件 318
16.2 事件和委托的关系 319
16.3 如何声明事件 319
16.4 订阅事件 321
16.5 触发事件 324
16.6 使用和扩展EventArgs类 325
16.7 使用自定义委托 327
16.8 事件访问器 330
第17章 泛 型 332
17.1 什么是泛型 332
17.2 泛型类型 335
17.3 泛型类型的声明和实例化 337
17.4 类型参数 342
17.5 类型参数的约束 343
17.5.1 Where子句 344
17.5.2 约束类型和顺序 345
17.6 泛型类 346
17.7 泛型结构 350
17.8 泛型接口 351
17.9 泛型委托 354
17.10 泛型方法 356
17.11 扩展方法和泛型类 358
17.12 协变和逆变 360
第18章 数 组 362
18.1 数组的声明 363
18.2 数组的类型 364
18.3 数组派生自Array对象 365
18.4 实例化数组 366
18.5 初始化数组 368
18.5.1 显式初始化一维数组 369
18.5.2 显式初始化矩形数组及要点 370
18.5.3 隐式类型数组 373
18.6 访问数组元素 374
18.7 交错数组 375
18.7.1 交错数组的声明 376
18.7.2 交错数组的实例化 376
18.7.3 交错数组的初始化 377
18.8 矩形数组和交错数组的对比 378
18.9 使用foreach和for语句访问数组 381
18.9.1 foreach语句 381
18.9.2 for语句 383
18.9.3 迭代变量 384
18.10 数组协变 386
18.11 从Array对象继承的成员 388
18.12 数组的浅复制和深复制 390
第19章 集 合 396
19.1 集合接口 396
19.2 常用的几种集合类型 400
19.2.1 ArrayList 402
19.2.2 Hashtable 406
19.2.3 Queue和Queue<T> 410
19.2.4 SortedList 414
19.2.5 Stack和Stack<T> 416
19.2.6 BitArray 420
19.2.7 List<T> 422
19.2.8 HashSet<T> 434
19.3 自定义集合 439
19.3.1 CollectionBase 440
19.3.2 ReadOnlyCollectionBase 445
19.4 迭代器 448
19.5 泛型集合接口支持协变和逆变 452
19.6 LINQ to Objects 456
19.6.1 LINQ简介 456
19.6.2 查询语法 458
19.6.3 方法语法 459
19.6.4 查询操作的组成 459
19.6.5 关于查询变量 460
19.6.6 查询语法和方法语法的统一 461
第20章 字符串与正则表达式 462
20.1 理解字符串 462
20.2 字符串的常用成员 465
20.3 字符串格式化 474
20.4 使用StringBuilder类 480
20.5 正则表达式 482
20.5.1 正则表达式基本语法 484
20.5.2 .NET对于正则表达式的支持 491
20.5.3开始使用正则表达式 496
第21章 异常处理 500
21.1 异常类 500
21.2抛出异常 502
21.3捕获异常 503
21.4自定义的异常类 507
21.5异常处理的原则 508
第22章 命名空间和程序集 510
22.1 命名空间 510
22.1.1 使用命名空间 511
22.1.2 使用别名 514
22.2 程序集 515
22.2.1 程序集的结构 518
22.2.2 程序集清单 519
22.2.3 私有程序集和共享程序集 521
22.2.4 应用程序域 521
22.2.5 创建动态程序集并动态加载执行 524
22.2.6 全局程序集缓存 528
第23章 预处理指令 534
23.1 什么是预处理指令 534
23.2 先来观察一段示例 534
23.3 预处理指令集 536
23.4 #define和#undef指令 537
23.5 条件编译指令 538
23.6 #warning和#error指令 540
23.7 #line指令 541
23.8 #region和#endregion指令 544
23.9 #pragma warning指令 546
第24章 元数据和特性 548
24.1 元数据 548
24.1.1 从IntelliSense谈起 554
24.1.2 访问元数据 556
24.2 特性(Attribute) 564
24.2.1 什么是特性 567
24.2.2 创建自定义特性 573
24.2.3 访问特性 581
24.2.4 常用特性 582
24.2.5特性应用完整示例 595
第25章 异步编程和多线程编程 600
25.1 进程和线程 600
25.2 BeginInvoke 和 EndInvoke 603
25.3 IAsyncResult接口和AsyncResult类 604
25.4 异步编程的4种方法 606
25.4.1 使用EndInvoke 606
25.4.2 使用WaitHandle 607
25.4.3 轮询 609
25.4.4 回调 611
25.5 多线程编程 613
25.5.1 Thread类 613
25.5.2 使用线程池 615
25.5.3 线程同步 617
25.5.4 死锁 622
第26章 I/O操作 627
26.1 文件和目录 627
26.1.1 File和Directory 628
26.1.2 FileInfo和DirectoryInfo 630
26.1.3 文件I/O的改进 634
26.2 流(Stream) 641
26.3 异步操作 646
26.4 网络流(NetworkStream)的使用 649
26.5 序列化 655
26.5.1 BinaryFormatter 658
26.5.2 SoapFormatter 660
26.5.3 XML序列化 664
26.6 独立存储机制 668
第27章 XML处理 671
27.1 System.Xml命名空间 671
27.2 使用DOM 672
27.3 XPath和XSLT 678
27.4 LINQ to XML 684
27.4.1 LINQ to XML类库介绍 684
27.4.2 创建XML文档 685
27.4.3 使用LINQ进行遍历和查询 686
27.4.4 修改XML文档 688
第28章 增强的COM Interop 690
28.1 Dynamic lookup 691
28.1.1 dynamic关键字 692
28.1.2 访问Python代码 693
28.1.3 访问COM对象 696
28.2 改进的参数传递 698
28.3 完整示例 704
第29章 并行编程 708
29.1任务并行库(TPL) 709
29.1.1并发和并行 710
29.1.2并行编程架构 711
29.2 Parallel 类 713
29.2.1 For方法重载一 715
29.2.2 For方法重载二 716
29.2.3 For方法重载三 722
29.3 Task类和Task<TResult>类 724
29.4 数据并行 726
29.5 任务并行 730
29.6 TaskFactory类和TaskFactory<TResult>类 733
29.6.1任务创建选项 737
29.6.2并发选项 753
29.6.3后续任务选项 757
29.7PLINQ 769
附录A Visual Studio 2010快速入门 773
A.1Visual Studio 2010的安装 773
A.2环境参数设置 778
A.3集成开发环境简介 784
A.3.1起始页 784
A.3.2菜单栏 790
A.3.3解决方案资源管理器 792
A.3.4 “属性”选项卡 795
A.3.5工具箱 797
A.3.6可视化设计器 798
A.3.7代码编辑器 799
A.3.8类视图 807
A.3.9智能感知(IntelliSense) 808
A.4使用MSDN 810
A.5生成和调试项目 814
A.6外部工具——IL反汇编程序 821
· · · · · · (
收起)