第1章 令人耳目一新的 .NET 1
1.1 认识 .NET 1
1.2 .NET的技术特征和新特性 3
1.2.1 .NET的技术特征 3
1.2.2 .NET的新特性 4
1.3 .NET的组成 5
1.4 .NET与J2EE的比较 7
1.5 小结 8
第2章 .NET框架与CLR 9
2.1 .NET框架 9
2.1.1 .NET框架的组成 9
2.1.2 .NET中的开发工具和编程语言 11
2.1.3 .NET框架的重大改进 11
2.2 通用语言运行时 12
2.2.1 通用语言运行时的概念与特点 12
2.2.2 通用语言运行时的功能 13
2.2.3 通用语言运行时的组成与原理分析 14
2.2.4 CLR与COM的比较 16
2.3 小结 17
第3章 C# 语言 18
3.1 C# 产生的背景 18
3.2 在 .NET上使用C# 语言的原因 18
3.3 C# 的特点 21
3.4 C# 与Java比较 23
3.4.1 C# 与Java的相同之处 24
3.4.2 C# 与Java的区别 24
3.5 小结 25
第4章 初步体验C# 编程 26
4.1 安装C# 编译器 26
4.1.1 在Windows 2000环境中安装 .NET 26
4.1.2 在Windows 98下安装 C# 编译器 26
4.1.3 编译器csc.exe的常用命令 27
4.2 选择C# 程序编辑器 27
4.3 用CSC编译器编译一个C# 程序 28
4.3.1 编辑C# 程序 28
4.3.2 编译运行此程序 29
4.3.3 分析语法 29
4.3.4 输入和输出 30
4.3.5 添加注释 31
4.4 在 .NET IDE中创建简单的C# 程序 32
4.4.1 在IDE中创建一个新的工程 32
4.4.2 创建hello.cs源文件 33
4.4.3 生成可执行文件 35
4.4.4 运行程序 35
4.5 小结 36
第5章 数据类型与变量 37
5.1 数据类型 37
5.1.1 值类型 37
5.1.2 引用类型 44
5.1.3 加框和解框 49
5.1.4 统一系统类型 51
5.2 变量 51
5.2.1 变量的种类 52
5.2.2 默认值 53
5.2.3 明确的赋值变量 53
5.2.4 变量引用 56
5.3 小结 56
第6章 名字空间与接口 57
6.1 名字空间 57
6.1.1 编译单元 57
6.1.2 名字空间声明 57
6.1.3 using指示符 58
6.1.4 名字空间成员 63
6.2 接口 63
6.2.1 接口声明 63
6.2.2 接口成员 64
6.2.3 完全资格接口成员名字 68
6.2.4 接口执行 68
6.3 小结 68
第7章 类与结构 79
7.1 类声明 79
7.1.1 类修饰符 79
7.1.2 类基本描述 80
7.1.3 类主体 81
7.2 类成员 82
7.2.1 继承 82
7.2.2 new 修饰符 83
7.2.3 访问修饰符 83
7.2.4 代表类型 85
7.2.5 静态和实例成员 85
7.3 常量 86
7.4 域 87
7.4.1 静态域和实例域 88
7.4.2 只读域 88
7.4.3 域初始化 89
7.4.4 变量初始化 90
7.5 转换操作 91
7.6 方法 92
7.6.1 方法的参数 92
7.6.2 静态方法和实例方法 97
7.6.3 virtual 方法 97
7.6.4 override 方法 99
7.6.5 sealed 方法 101
7.6.6 abstract 方法 102
7.6.7 extern方法 103
7.6.8 方法体 104
7.7 属性 105
7.7.1 静态属性 105
7.7.2 访问标志 105
7.8 事件 107
7.9 索引 108
7.10 实例构造 110
7.10.1 构造初始化 110
7.10.2 实例变量初始化 110
7.10.3 构造执行 111
7.10.4 默认构造器 113
7.10.5 私有构造器 113
7.10.6 析构 114
7.11 静态构造器 114
7.12 结构 117
7.12.1 结构声明 117
7.12.2 结构成员 117
7.12.3 类和结构的区别 117
7.12.4 结构例子 120
7.13 小结 123
第8章 不安全代码与异常 125
8.1 不安全内容 125
8.2 指针类型 127
8.3 固定的和可移动的变量 128
8.4 指针转换 128
8.5 在表达式中的指针 129
8.5.1 指针指向 129
8.5.2 指针成员访问 129
8.5.3 指针元素访问 130
8.5.4 地址操作 131
8.5.5 指针增加和减少 131
8.5.6 指针算术运算 131
8.5.7 指针比较 132
8.5.8 sizeof操作符 132
8.6 fixed 语句 133
8.7 堆栈分配 135
8.8 动态存储定位 136
8.9 异常及异常处理 138
8.9.1 产生异常的原因 138
8.9.2 System.Exception类 138
8.9.3 普通的异常类 138
8.10 小结 139
第9章 语句 140
9.1 using 语句 140
9.2 结束点和可达性 141
9.3 语句块 143
9.4 空语句 143
9.5 标签语句 144
9.6 声明语句 144
9.6.1 局部变量声明 144
9.6.2 局部常量声明 145
9.7 表达式语句 145
9.8 选择语句 145
9.8.1 if 语句 145
9.8.2 switch 语句 146
9.9 循环语句 149
9.9.1 for 语句 149
9.9.2 foreach 语句 150
9.9.3 while 语句 151
9.9.4 do 语句 152
9.10 跳转语句 153
9.10.1 break 语句 154
9.10.2 continue语句 154
9.10.3 goto语句 155
9.10.4 return 语句 156
9.10.5 throw 语句 156
9.11 try 语句 157
9.12 checked 和unchecked 语句 159
9.12.1 对编译器设置溢出校验 160
9.12.2 语句溢出校验 160
9.13 lock 语句 161
9.14 小结 162
第10章 C# 与COM互操作 163
10.1 属性 163
10.1.1 ComImport属性 163
10.1.2 StructOffset 属性 164
10.1.3 ComRegisterFunction属性 164
10.1.4 ComSourceInterfaces属性 164
10.1.5 ComUnregisterFunction属性 165
10.1.6 ComVisible属性 165
10.1.7 DispId属性 165
10.1.8 DllImport属性 166
10.1.9 FieldOffset属性 167
10.1.10 Guid属性 167
10.1.11 HasDefaultInterface属性 167
10.1.12 ImportedFromTypeLib属性 168
10.1.13 In和Out属性 168
10.1.14 IndexerName属性 169
10.1.15 InterfaceType属性 169
10.1.16 MarshalAs属性 169
10.1.17 NoIDispatch属性 170
10.1.18 PreserveSig属性 170
10.1.19 StructLayout属性 171
10.1.20 TypeLibFunc属性 171
10.1.21 TypeLibType属性 171
10.1.22 TypeLibVar属性 172
10.2 C# 和COM互操作的例子:支持枚举 172
10.3 小结 175
第11章 C# 应用的一些小技巧 176
11.1 在C# 中生成安装程序 176
11.2 上传文件到服务器 177
11.3 C# 对线程的处理 178
11.4 用C# 编写时钟程序 180
11.5 其他的小技巧 182
11.5.1 用C# 获取主机的IP地址 182
11.5.2 用C# 调用MessageBox 183
11.5.3 用C# 调用Windows API 183
11.5.4 C# 对光标的操作 183
11.5.5 C# 对进程的获取 183
11.5.6 在C# 中运行其他程序 184
11.5.7 用C# 打开声音文件 184
11.5.8 从控制台读取数值 184
11.5.9 C# 中使用OpenFileDialog类 185
11.6 小结 185
第12章 用C# 开发桌面程序 186
12.1 用C# 实现清除文件夹 186
12.1.1 程序设计与分析 186
12.1.2 程序源代码及运行 188
12.2 用C# 开发DLL程序 189
12.2.1 程序设计 189
12.2.2 编译生成DLL文件 190
12.2.3 创建简单的客户端程序 190
12.3 C# 开发Windows程序 191
12.3.1 创建应用程序框架 191
12.3.2 消息处理 193
12.3.3 创建C# 类库 195
12.4 小结 198
第13章 用C# 开发WinForm程序 199
13.1 WinForm是什么 199
13.2 WinForm的使用 200
13.3 WinForm设计器的布局 201
13.4 C# 的WinForm编程 204
13.4.1 用C# 创建普通的WinForm 204
13.4.2 用C# 创建特殊的WinForm 205
13.4.3 在WinForm中加入一个标签 207
13.5 WinForm与GDI+ 208
13.6 使用WinForm访问系统底层 211
13.7 小结 212
第14章 C# 与XML结合编程 213
14.1 关于XML 213
14.1.1 XML是什么 213
14.1.2 XML的语法 214
14.1.3 如何使用XML 215
14.2 C# 对XML文件处理 216
14.2.1 浏览XML文件内容 216
14.2.2 往XML文件中添加内容 217
14.2.3 删除XML文件内容 218
14.3 用C# 与XML创建客户浏览菜单程序 219
14.3.1 程序设计 219
14.3.2 程序代码分析 219
14.3.3 编译 C# 文件 225
14.4 小结 225
第15章 在ASP.NET上的C# 编程 227
15.1 ASP.NET简介 227
15.1.1 ASP.NET与ASP的联系和区别 227
15.1.2 ASP.NET的配置 227
15.1.3 ASP.NET的内置对象 228
15.1.4 ASP.NET的特点 229
15.2 ASP .NET与C# 编程 231
15.2.1 用ASP.NET实现域名查询 231
15.2.2 用C# 实现发送E-mail 232
15.2.3 用C# 编程实现显示事件日志记录 234
15.2.4 在ASP.NET中用C# 实现文件处理 239
15.3 小结 243
第16章 C# 与Web数据库编程 244
16.1 C# 与ADO.NET结合编程 244
16.1.1 ADO.NET是什么 244
16.1.2 ADO.NET核心组件 245
16.1.3 ADO.NET的对象 247
16.2 用C# 添加Access数据库的记录 248
16.2.1 程序运行的环境及数据库设置 249
16.2.2 程序设计 249
16.2.3 程序运行和源代码 250
16.3 用C# 的SQL编程 257
16.3.1 存取ODBC数据库 257
16.3.2 对记录的维护 258
16.3.3 编写简单的留言本 258
16.3.4 使用XML进行信息处理 261
16.4 小结 261
第17章 用C# 编程操作注册表 262
17.1 有关注册表的C# 编程基础 262
17.1.1 Windows注册表 262
17.1.2 Registry及RegistryKey类 263
17.2 生成注册表的键及键值 264
17.3 读取注册表的主键和键值 265
17.3.1 准备工作 265
17.3.2 程序设计 265
17.3.3 源程序代码 267
17.4 删除注册表中键及键值 269
17.4.1 删除键和键值所用的方法 269
17.4.2 程序设计与实现 270
17.5 小结 271
附录B C# 编译器选项 279
B.1 输出文件相关选项 279
B.2 输入文件相关选项 279
B.3 资源相关选项 279
B.4 代码生成相关选项 279
B.5 错误和警告相关选项 280
B.6 语言相关选项 280
B.7 其他方面的选项 280
B.8 增强的选项 280
附录C C# 编译错误 281