第1章 C#概述 2
1.1 为什么需要C 2
1.1.1 简单性 2
1.1.2 现代性 3
1.1.3 面向对象 4
1.1.4 类型安全性 4
1.1.5 版本处理技术 5
1.1.6 兼容性 5
1.1.7 灵活性 6
1.2 小结 6
第2章 理论基础——公用语言运行环境 8
2.1 公用语言运行环境 8
2.1.1 中间语言和元数据 9
2.1.2 即时编译器 9
2.2 虚拟对象系统 11
2.2.1 VOS类型系统 12
2.2.2 元数据 12
2.2.3 公用语言规范 13
2.2.4 虚拟运行系统 15
2.3 小结 16
第3章 第一个C#应用程序 18
3.1 选择一个编辑器 18
3.2 Hello World代码 18
3.3 编译程序 20
3.4 输入和输出 21
3.5 添加注释 23
3.6 小结 24
第4章 C#的数据类型 26
4.1 值类型 26
4.1.1 简单类型 26
4.1.2 结构类型 28
4.1.3 枚举类型 29
4.2 引用类型 30
4.2.1 对象类型 30
4.2.2 类(Class)类型 31
4.2.3 接口 31
4.2.4 代表(Delegate) 32
4.2.5 string类型 32
4.2.6 数组(Arrays) 33
4.3 装箱(Boxing)和拆箱(Unboxing) 33
4.3.1 装箱转换 34
4.3.2 拆箱转换 34
4.4 小结 35
第5章 类 38
5.1 构造器与析构器 38
5.2 方法 39
5.2.1 方法中的参数 39
5.2.2 方法的重载 42
5.2.3 方法的覆盖 45
5.3 类的属性 47
5.4 索引指示器 48
5.5 事件 51
5.6 修饰符的使用 53
5.6.1 类修饰符 53
5.6.2 成员变量修饰符 54
5.6.3 访问修饰符 55
5.7 小结 57
第6章 控制语句 60
6.1 选择语句 60
6.1.1 IF语句 60
6.1.2 switch语句 62
6.2 循环语句 66
6.2.1 for语句 66
6.2.2 foreach语句 68
6.2.3 while语句 69
6.2.4 do语句 70
6.3 小结 72
第7章 异常处理 74
7.1 检测语句和不检测语句 74
7.1.1 在编译器设置面板中设置溢出检测 75
7.1.2 程序内的溢出检测 75
7.2 异常处理的语句 76
7.2.1 用try-catch进行捕捉 76
7.2.2 用try-finally进行清除 78
7.2.3 用try-catch-finally来处理所有异常 81
7.3 抛出异常 83
7.3.1 再次抛出异常 83
7.3.2 构建自己的异常事件类 84
7.4 异常处理中应注意事项 86
7.5 小结 86
第8章 在C#中编写组件 88
8.1 第一个组件 88
8.1.1 创建组件 88
8.1.2 编译组件 91
8.1.3 创建一个简单的客户应用程序 91
8.2 使用名字空间 92
8.2.1 在名字空间中包装一个类 93
8.2.2 在客户端应用程序中使用名字空间 95
8.2.3 在名字空间中加入多个类 98
8.3 小结 99
第9章 配置和部署 102
9.1 条件编译 102
9.1.1 预处理器的使用 102
9.1.2 Conditional属性 106
9.2 XML中的文档注释 108
9.2.1 描述元素 109
9.2.2 添加备注和表单 111
9.2.3 提供示例 115
9.2.4 描述参数 117
9.2.5 描述属性 120
9.2.6 编译文档 122
9.3 为代码编写版本号 123
9.4 小结 125
第10章 用未操控的代码进行内部操作 128
10.1 COM互用性 128
10.1.1 向COM展示NET对象 128
10.1.2 向NET对象展示COM对象 136
10.2 平台请求服务 139
10.3 不安全代码 141
10.4 小结 142
第11章 调试C#代码 146
11.1 调试任务 146
11.1.1 为应用程序创建一个调试版本 146
11.1.2 选择一个可执行的程序 147
11.1.3 设置中断点 148
11.1.4 逐句测试程序 150
11.1.5 添加到一个进程 150
11.1.6 检查并修改变量 153
11.1.7 管理异常事件处理 153
11.1.8 JIT调试 154
11.1.9 调试组件 155
11.2 中间语言分解器 156
11.3 小结 157
第12章 安全性 160
12.1 代码访问安全机制 160
12.1.1 类型安全的确认 160
12.1.2 许可 160
12.2 基于角色的安全机制 162
12.3 小结 163