第一章 C#的基本概述 1
1.1 C#的定义 1
1.2 为什么需要C 2
1.2.1 C#将成为.NET平台的编程先锋 2
1.2.2 C#是企业级程序设计的首选语言 3
1.2.3 C#设计考虑了开发效率与安全性 3
1.2.4 C#具有功能强、易于表现和灵活性 4
1.3 C#的各种特性 5
1.3.1 简单性 5
1.3.2 现代性 6
1.3.3 面向对象 6
1.3.4 类型安全性 7
1.3.5 版本控制技术 7
1.3.6 兼容性 8
1.3.7 灵活性 8
1.3.8 C#的弱点 8
1.4 如何安装C#编译器 9
1.5 网友关心的有关.NET和C#问题 10
第二章 NGWS运行环境技术基础 14
2.1 NGWS运行环境 14
2.1.1 中间语言和元数据 15
2.1.2 即时编译器(JITters) 16
2.2 虚拟对象系统(VOS) 17
2.2.1 VOS类型系统 17
2.2.2 元数据 18
2.2.3 通用语言规范(CLS) 18
2.2.4 虚拟执行系统(VES) 21
第三章 C#程序设计的基本过程 22
3.1 C#程序设计过程 22
3.2 C#程序的创建、编译和执行 23
3.2.1 创建第一个C#应用程序(Hello World) 23
3.2.2 C#程序的编译过程 25
3.2.3 执行C#可执行文件 26
3.3 屏幕输入和输出方法 26
3.4 为C#代码添加注释 28
3.5 C#的接口和界面 29
3.6 C#与VB语法结构的比较 31
第四章 C#的数据类型 39
4.1 常量、变量、运算符和表达式 39
4.1.1 标识符命名 39
4.1.2 常数 39
4.1.3 变量 42
4.1.4 运算符 49
4.1.5 表达式 56
4.2 数据类型的分类 57
4.3 值类型 58
4.3.1 简单类型 58
4.3.2 结构类型 62
4.3.3 枚举类型 63
4.4 引用类型 63
4.4.1 对象类型 64
4.4.2 class类型 64
4.4.3 接口 64
4.4.4 代表元(Delegate) 66
4.4.5 字符串类型 66
4.4.6 数组 67
4.5 装箱和拆箱转换机制 74
4.5.1 装箱转换 74
4.5.2 拆箱转换 76
第五章 C#中使用的类 77
5.1 类的基础知识 77
5.1.1 类名与class类型 77
5.1.2 类名作用域 78
5.1.3 类对象与类成员 79
5.1.4 内部函数 79
5.1.5 静态成员 80
5.1.6 成员作用域 81
5.1.7 基类与派生类存取 83
5.1.8 虚基类 85
5.2 构造函数 86
5.2.1 缺省构造函数 86
5.2.2 构造函数的重载 87
5.2.3 构造函数的调用次序 88
5.2.4 类的初始化 89
5.3 析构函数 92
5.3.1 析构函数的调用 92
5.3.2 atexit、#pragma exit与析构函数 93
5.3.3 exit与析构函数 93
5.3.4 abort与析构函数 93
5.3.5 虚析构函数 94
5.4 类的方法 95
5.4.1 方法参数 95
5.4.2 方法重载 98
5.4.3 方法覆盖 100
5.4.4 类的属性 102
5.5 索引 104
5.6 事件处理 106
5.7 使用修饰符 108
5.7.1 类修饰符 108
5.7.2 成员修饰符 109
5.7.3 存取修饰符 109
第六章 C#程序控制语句 112
6.1 if语句 112
6.1.1 if语句的一般形式 112
6.1.2 嵌套的if语句 115
6.2 Switch语句 116
6.3 For语句 120
6.3.1 For语句的一般形式 120
6.3.2 缺省条件的For语句 121
6.4 While语句 122
6.5 foreach语句 123
6.6 do-While语句 124
6.7 goto语句标号和调用 126
6.8 综合应用 126
6.8.1 for语句应用 127
6.8.2 if语句应用 127
6.8.3 Switch语句应用 127
6.8.4 do-While语句应用 128
6.8.5 While语句应用 128
6.8.6 内存的自动控制综合实例 129
第七章 C#结构、文件处理和面向对象程序设计 133
7.1 C#的结构及其用法 133
7.1.1 结构的定义 133
7.1.2 结构的初始化 137
7.1.3 嵌套结构 139
7.2 结构数组 141
7.2.1 结构数组的声明 141
7.2.2 结构数组的访问 143
7.2.3 建立结构数组 144
7.3 数组结构成员 145
7.4 顺序文件 146
7.4.1 为什么要使用磁盘 147
7.4.2 磁盘文件访问类型 147
7.4.3 顺序文件的操作 148
7.4.4 文件的打开和关闭 148
7.4.5 写文件 151
7.4.6 追加文件 153
7.4.7 读文件 154
7.5 随机文件 156
7.5.1 随机文件记录 156
7.5.2 打开随机文件 157
7.6 面向对象的程序设计 158
7.6.1 OOP概述 158
7.6.2 带函数的数据 159
7.6.3 用类进行数据隐藏 161
7.6.4 访问的重新定义 161
第八章 C#编写组件的方法 163
8.1 创建和编译C#组件 163
8.1.1 创建C#组件 163
8.1.2 编译C#组件 165
8.2 在客户应用程序中使用组件 166
8.3 使用名字空间工作 167
8.3.1 在名字空间中包装类 167
8.3.2 在客户应用程序中使用名字空间 170
8.3.3 增加多个类到名字空间 172
第九章 C#的异常处理 174
9.1 异常处理中的注意事项 174
9.2 校验和非校验语句 174
9.2.1 在编译器中设置溢出校验 175
9.2.2 程序语法溢出校验 175
9.3 异常处理中使用的语句 176
9.3.1 使用try和catch捕获异常 177
9.3.2 使用try和finally清除异常 178
9.3.3 使用try-catch-finally处理所有的异常 180
9.4 抛出异常 182
9.4.1 重新抛出异常 183
9.4.2 创建自己的异常类 183
第十章 C#应用配置 186
10.1 条件编译 186
10.1.1 预处理器的用法 186
10.1.2 条件(Conditional)属性 190
10.2 XML中的文档注释 191
10.2.1 描述一个成员 192
10.2.2 添加备注和列表 194
10.2.3 提供例子 197
10.2.4 描述参数 199
10.2.5 描述属性 201
10.2.6 编译文档 203
10.3 代码版本化 204
10.3.1 .NET组件的版本号 204
10.3.2 私有.NET组件 205
10.3.3 共享.NET组件 205
第十一章 C#代码的调试和互操作性 206
11.1 C#代码调试任务 206
11.1.1 创建一个调试版本 206
11.1.2 选择可执行程序 207
11.1.3 设置中断点的四种方法 207
11.1.4 逐句测试C#程序 208
11.1.5 添加可执行程序到一个进程 208
11.1.6 修改当前变量 210
11.1.7 处理异常事件 210
11.1.8 用JIT调试C#程序 210
11.1.9 调试C#组件 211
11.2 中间语言分解器的使用 211
11.3 .NET与COM互操作性 211
11.3.1 在COM中使用.NET组件 211
11.3.2 在.NET中访问COM对象 217
11.4 平台请求服务 220
11.5 C#支持的不安全代码 221
第十二章 C#安全机制与网络安全管理 223
12.1 代码访问安全机制 223
12.1.1 代码类型安全的认定 223
12.1.2 标准许可与身份许可 224
12.2 .NET应用程序安全机制 225
12.3 Windows NT文件系统(NTFS)的安全性 226
12.3.1 为什么使用NTFS文件系统 226
12.3.2 共享许可权与NTFS许可权 226
12.3.3 NTFS的安全性 227
12.3.4 NTFS的审核功能 232
12.4 网络安全管理的实施方案 232
12.4.1 创建Windows NT域 232
12.4.2 用户帐户和域的工作方式 234
12.4.3 使用委托关系维护网络安全性 237
12.4.4 Windows NT与用户帐户的安全性 242
12.5 网络文件系统的安全管理 246
12.5.1 为什么使用NTFS文件系统 246
12.5.2 共享许可权与NTFS许可权 246
12.5.3 NTFS的安全性 247
12.5.4 NTFS的审核功能 250
附录 内存与数制 252