目录 1
译者序 1
作者简介 1
致谢 1
前言 1
第1章 .NFT基本原理 1
1.1 引言 1
1.2 .NET平台纵览 1
1.3 检查.NET框架的特性 2
1.3.1 多语言开发 3
1.3.2 平台及处理器独立 4
1.3.3 自动内存管理 4
1.3.4 版本支持 5
1.3.5 支持开放标准 5
1.3.6 配置简单 6
1.3.7 与非托管代码互操作的能力 7
1.3.8 提供安全 7
1.4.1 通用语言运行环境 9
1.4 理解.NET体系结构 9
1.4.2 .NET框架类库 10
1.4.3 Microsoft中间语言(MSIL) 11
1.4.4 运行时编译执行技术 11
1.5 掌握.NET从源代码到可执行文件的步骤 12
1.6 小结 13
1.7 快速解决方案 14
1.8 常见问题解答 15
2.2 C#语言 17
2.1 引言 17
第2章 C#介绍 17
2.2.1 与Java的相似处 18
2.2.2 C#与Java的不同之处 19
2.3 开始 20
2.3.1 安装.NET框架的SDK 20
2.3.2 创建第一个C#程序 21
2.3.3 编译并运行程序 22
2.3.4 使用调试工具 23
2.4 使用不同的IDE 26
2.4.1 Visual Studio.NET 27
2.4.2 其他的IDE 29
2.5 C#概述 29
2.5.1 创建媒体播放器应用程序 30
2.5.2 使用Visual Studio.NET进行快速应用程序开发 37
2.6 小结 40
2.7 快速解决方案 41
2.8 常见问题解答 41
3.2 Main()方法 43
3.1 引言 43
第3章 语言基础 43
3.2.1 命令行参数 45
3.2.2 返回值 47
3.3 单行及多行注释 49
3.4 数据类型及通用类型系统 56
3.5 变量 57
3.6 常量 59
3.7 赋值语句 59
3.8 运算符 62
3.8.1 算术运算符 63
3.8.2 赋值运算符 64
3.8.3 递增和递减运算符 65
3.8.4 关系运算符 65
3.8.5 逻辑运算符 66
3.8.6 位运算符 67
3.8.7 三元操作符 68
3.8.8 运算符优先权 68
3.9 预处理指令 69
3.9.2 #if、#elif、#else和#endif 70
3.9.1 #define和#undef 70
3.9.3 #error和#warning 72
3.9.4 #region和#endregion 74
3.9.5 #line 74
3.10 名字空间 76
3.11 小结 77
3.12 快速解决方案 77
3.13 常见问题解答 79
4.2 字符串 81
第4章 程序结构 81
4.1 引言 81
4.2.1 WriteLine方法 82
4.2.2 创建字符串 82
4.2.3 逐字的字符串文本 84
4.2.4 StringBuilder类 85
4.2.5 使用正则表达式 86
4.3 流程控制 88
4.3.1 分支语句 88
4.3.2 迭代语句 91
4.3.3 跳转语句 92
4.4 数组 94
4.4.1 声明及初始化数组 94
4.4.2 使用params关键字 95
4.4.3 多维数组 96
4.5 foreach语句 101
4.6 索引 103
4.6.1 实现索引 103
4.6.2 多个索引 106
4.6.3 多参数索引 108
4.7 集合 109
4.8 异常 113
4.8.1 捕获异常 113
4.8.2 抛出异常 114
4.9 小结 120
4.10 快速解决方案 121
4.11 常见问题解答 122
5.2 使用类 123
第5章 对象和类 123
5.1 引言 123
5.2.1 访问控制 124
5.2.2 类修饰符 124
5.2.3 抽象类 128
5.2.4 密封类 128
5.2.5 实例变量 128
5.2.6 静态变量 129
5.3 使用方法 131
5.3.1 访问修饰符 133
5.3.2 方法参数 134
5.3.3 重载方法 137
5.4 创建对象 139
5.5 销毁对象 144
5.5.1 内存管理和碎片收集 144
5.5.2 C#的析构器 145
5.6 小结 148
5.8 常见问题解答 149
5.7 快速解决方案 149
第6章 面向对象编程 151
6.1 引言 151
6.2 继承 151
6.2.1 定义基类 153
6.2.2 调用基类的构造器 154
6.3 多态性 157
6.3.1 抽象类 158
6.3.2 修饰符abstract 161
6.3.3 修饰符virtual 162
6.3.4 修饰符override 164
6.3.5 修饰符new 168
6.4 内部类 171
6.5 用户接口 172
6.5.1 创建一个接口 173
6.5.2 声明接口 173
6.5.3 接口的实现 174
6.5.4 外部接口的实现 181
6.7 快速解决方案 184
6.6 小结 184
6.8 常见问题解答 185
第7章 C#的其他特点 186
7.1 引言 186
7.2 性质 186
7.3 只读字段 189
7.4 枚举 189
7.5 装箱和拆箱 192
7.5.2 拆箱 193
7.5.1 装箱 193
7.6 操作符重载 194
7.6.1 一元操作符重载 197
7.6.2 二元操作符重载 200
7.6.3 Equals()方法 200
7.7 自定义转换 200
7.7.1 implicit操作符 201
7.7.2 explicit操作符 202
7.8 结构 204
7.8.1 结构的定义 205
7.8.2 结构的使用 207
7.9 小结 210
7.10 快速解决方案 210
7.11 常见问题解答 211
第8章 委派和事件 213
8.1 引言 213
8.2 委派 213
8.3.1 声明 214
8.3 将委派作为回调函数 214
8.3.2 实例化 216
8.3.3 调用 217
8.3.4 实现回调函数 217
8.4 将委派用于事件处理 220
8.4.1 Java中的事件处理 221
8.4.2 C#中的事件处理 223
8.5 多播 228
8.6.1 将委派声明成静态变量 231
8.6 高级委派用法 231
8.6.2 委派和线程的创建 232
8.7 小结 233
8.8 快速解决方案 234
8.9 常见问答解答 234
第9章 属性和配件 236
9.1 引言 236
9.2 使用属性 236
9.2.1 使用属性 237
9.2.2 创建自定义属性 240
9.3 使用映射 244
9.4 创建配件 250
9.4.1 显示数据 250
9.4.2 构造配件 251
9.4.3 多模块配件 251
9.5 版本方案 253
9.6 小结 256
9.7 快速解决方案 256
9.8 常见问题解答 257
第10章 多线程 258
10.1 引言 258
10.2 线程 258
10.3 创建线程 259
10.4 线程管理 263
10.5 调度线程 265
10.6 线程同步 269
10.6.1 使用lock语句 269
10.6.2 使用监控类 271
10.7 避免死锁和资源缺乏 273
10.8 小结 277
10.9 快速解决方案 278
10.10 常见问题解答 279
第11章 使用I/O流 280
11.1 引言 280
11.2 文件系统 280
11.2.1 目录 280
11.2.2 文件 283
11.3 流 286
11.3.1 Stream 287
11.3.2 FileStream 288
1 1.3.3 MemoryStream 288
11.3.4 BufferedStream 291
11.4 数据编码类型 291
11.5 文本 294
11.5.1 StreamReader和StreamWriter 295
11.5.2 StringReader和StringWriter 296
11.6.1 服务器端 297
11.6 网络I/O 297
11.6.2 客户端 299
11.7 同步和异步 301
11.8 Web流 304
11.9 串行化 305
11.9.1 创建可串行化的对象 305
11.9.2 串行化一个对象 306
11.9.4 过渡过程数据 307
11.9.3 对象的并行化 307
11.9.5 并行化操作 308
11.10 小结 310
11.11 快速解决方案 310
11.12 常见问题解答 311
第12章 使用Windows窗体创建用户界面 313
12.1 引言 313
12.2 Windows窗体类 313
12.3 创建Windows窗体应用程序 314
12.4 使用控件 316
12.4.2 基本控件 317
12.4.1 添加控件 317
12.5 事件处理 320
12.6 使用文本编辑器 321
12.7 使用Visual Studio.NET 324
12.8 小结 327
12.9 快速解决方案 328
12.10 常见问题解答 329
13.2 Web Service综述 330
第13章 C#的Web开发 330
13.1 引言 330
13.3 创建Web Service 331
13.3.1 连接数据库 332
13.3.2 建立Web Service 335
13.3.3 运行和测试Web Service 337
13.3.4 用VS.NET创建图书Web Service 338
13.4 消费Web Service 341
13.4.1 Web Service描述语言 342
13.4.2 创建代理对象 343
13.5 Web窗体概述 347
13.6 使用Web窗体控件 350
13.6.1 访问HTML页的Web控件 351
13.6.2 数据授权控件 351
13.6.3 有效性检查控件 352
13.6.4 复杂的Web控件 353
13.7 创建Web窗体应用程序 356
13.8 小结 360
13.9 快速解决方案 361
13.10 常见问题解答 362
第14章 使用ActiveX、COM和非托管代码 363
14.1 引言 363
14.2 使用非托管代码 364
14.3 使用平台调用工具 366
14.4 使用COM组件 368
14.4.1 创建简单的COM组件 369
14.4.2 运行时可调用包 371
14.5.1 ActiveX控件和Windows窗体控件的差别 380
14.5 使用ActiveX控件 380
14.5.2 使用ActiveX控件导入工具(AxImp.exe) 381
14.5.3 使用Visual Studio.NET导入ActiveX控件 382
14.6 使用指针 385
14.6.1 不安全代码 385
14.6.2 unsafe关键字 386
14.6.3 fixed关键字 386
14.7 小结 388
14.8 快速解决方案 389
14.9 常见问题解答 390
第15章 Microsoft的JUMP(Java用户移植途径) 391
15.1 引言 391
15.2 什么是J# 392
15.3 使用Visual J# 393
15.4 创建一个简单的Visual J#应用程序 396
15.5 小结 406
15.6 快速解决方案 407
15.7 常见问题解答 407
附录 C#关键字与Java中的对应关键字 408