目录 1
译者序 1
前言 1
第一部分 .NET环境和C 1
第1章 C#和.NET简介 1
1.1 何时使用C#和C++ 5
1.2 .NET和其他开发环境的区别 8
1.3 使用公共语言运行时 10
1.4 查看中间语言代码 13
1.5 利用实时调试 14
1.6 利用.NET与COM的互操作特性 16
1.7 通过.NET版本控制来处理软件更新 17
1.8 使用.NET反射机制获取类的相关信息 19
第2章 在Visual Studio.NET中开发C#应用程序 22
2.1 使用Visual Studio.NET的“选项”对话框 26
2.2 定制工具栏和菜单 27
2.3 在工具菜单中增加菜单项 29
2.4 测试驱动Visual Studio.NET 31
2.5 使用属性窗口 34
2.6 使用智能提示 36
2.7 获取帮助 37
第二部分 C#语言 41
第3章 C#的预备知识 41
3.1 使用C#库类 45
3.2 创建命令行程序 47
3.3 在命令行程序中添加引用 48
3.4 与C++的比较 50
3.5 创建Windows程序 50
3.6 与Visual Basic的比较 52
3.7 理解空白和标记 54
3.8 注释代码 55
3.9 用XML注释文档化代码 57
3.10 使用C#调试器 58
3.11 使用输出窗口和任务列表窗口 60
3.12 解析任务列表窗口 60
3.13 编写和使用自己的名称空间 61
3.14 使用Console类 62
3.15 格式化输出和字符串 63
3.16 使用预处理命令 66
第4章 C#基础 70
4.1 理解值类型变量 75
4.2 理解引用类型变量 76
4.3 编写表达式 79
4.4 编写语句 80
4.5 使用托管代码 81
4.6 使用逻辑操作符 84
4.7 使用关系、相等和条件操作符 87
4.8 使用赋值操作符 89
4.9 理解C#的类型操作符 91
4.10 使用unsafe代码 93
4.11 使用sizeof操作符 95
4.12 装箱和拆箱 96
4.13 使用checked和unchecked语句 99
4.14 编写循环 102
4.15 使用程序控制语句 106
4.16 理解C#中的作用域 111
第5章 C#中的数据类型 113
5.1 在C#中定义结构 118
5.2 声明和使用简单数据类型 120
5.3 创建枚举列表 121
5.4 使用引用类型 124
5.5 C#类的基础概念 125
5.6 在C#中声明数组 126
5.7 理解接口 127
5.8 使用代理来创建回调函数 128
5.9 使用object数据类型 130
5.10 向函数传递参数 131
5.11 使用字段和属性 134
5.12 使用内部字符串表来降低内存消耗 138
5.13 C#中的字符串编码 138
5.14 C#中的数据转换 142
第6章 C#中的结构 144
6.1 定义结构 147
6.2 以值类型对象来使用结构 151
6.3 以引用的方式使用结构 152
6.4 在结构中增加函数 154
6.5 在结构中添加属性 158
第7章 理解C#类 163
7.1 使用内建类 167
7.2 使用this关键字来引用当前对象 174
7.3 使用访问关键字保护类成员 176
7.4 使用类的成员方法和属性 177
7.5 使用static修饰符修饰类成员 183
7.6 声明构造函数和析构函数 185
7.7 创建常量和只读字段 190
7.8 在类中嵌套其他的类 193
7.9 重载和名字隐藏 197
第8章 C#语言和面向对象编程 204
8.1 封装数据 206
8.2 从基类中继承 208
8.3 设计基类 212
8.4 隐藏基类的成员 213
8.5 按次序调用构造函数和析构函数 214
8.6 使用sealed修饰符来禁止继承 216
8.7 多态:使用虚方法来改变类的行为 217
8.8 使用虚属性 228
8.9 定义抽象类 230
8.10 声明抽象函数 231
8.11 使用对象浏览器 234
8.13 使用对象面板 236
8.14 使用成员面板 236
8.15 使用对象浏览器进行导航 237
8.16 搜索符号 237
第9章 异常处理 239
9.1 在CLR中使用异常处理 242
9.2 使用try和catch代码块 244
9.3 捕获异常 247
9.4 使用多重catch代码块 249
9.5 使用异常类 251
9.6 抛出异常 254
9.7 异常块的作用域 258
9.8 使用带有checked变量的异常 259
9.9 在异常块中结束程序 261
9.10 理解finally代码块 263
第10章 C#高级特性 266
10.1 嵌套的名称空间 270
10.2 使用using指令来指定名称空间 271
10.3 深入了解using语句 274
10.4 添加引用 275
10.5 创建模块文件 279
10.6 创建共享配件 280
10.7 使用C#接口定义抽象行为 283
10.8 使用反射机制获取运行时信息 286
10.9 动态调用对象 290
10.10 创建执行线程 292
第11章 使用C#数组 298
11.1 初始化数组 303
11.2 使用多维数组 305
11.3 使用不规则数组 307
11.4 使用System.Array类 310
11.5 数组的搜索和排序 311
11.6 使用Copy()方法来复制数组值 314
11.7 使用对象数组 316
11.8 使用索引器 318
11.9 索引器的工作机制 320
11.10 声明索引器 321
11.11 使用C#的索引器向导 322
第12章 文件操作 323
8.12 设置浏览范围 325
12.1 使用FileStream类 329
12.2 使用MemoryStream类创建临时存储空间 331
12.3 使用NetworkStream类创建网络连接 334
12.4 使用BufferedStream类缓冲流的输入输出 338
12.5 执行异步I/O 340
12.6 用Null字段作为位存储桶删除无用的数据 342
12.7 使用TextReader和TextWriter抽象类 344
12.8 使用StreamReader和StreamWriter类 344
12.9 使用FileOpen通用对话框打开文件 348
12.10 使用File和FileInfo类 351
12.11 获取和设置目录 355
第三部分 用C#进行Windows编程 361
第13章 编写Windows应用程序 361
13.1 创建基于窗体的应用 364
13.2 隐藏和显示窗体 368
13.3 在窗体上添加控件 370
13.4 向应用程序中添加窗体 373
13.5 设置Tab键顺序 378
13.6 设置窗体的属性 379
13.7 使用模态和非模态窗体 379
第14章 调试C#程序 388
14.1 使用DbgCLR.exe调试C#和.NET应用程序 392
14.2 使用实时调试工具来调试.Net应用程序 394
14.3 在Visual Studio调试器中运行程序 395
14.4 设置断点来暂停执行程序 396
14.5 在方法中设置条件 398
14.6 恢复堆栈跟踪信息 400
14.7 使用调试类 403
14.8 使用跟踪侦听器 407
14.9 将调试信息写入事件日志中 411
第15章 创建用户界面 417
15.1 在窗体上添加菜单 418
15.2 使用菜单设计器 422
15.3 为菜单增加修饰 430
15.4 增加快捷键 430
15.5 增加图形 431
15.6 增加工具栏 432
15.7 增加上下文菜单 434
15.8 在树视图控件中显示内容 435
15.9 在列表视图控件中显示内容 440
15.10 一个资源管理器风格的应用程序 447
第16章 使用Windows控件 449
16.1 设置控件的属性 452
16.2 使用不可见控件 455
16.3 响应控件消息 456
16.4 用一个事件来响应多个控件 458
16.5 使用空闲进程来使能和禁用控件 460
16.6 使用GroupBox控件 461
16.7 单选按钮控件 463
16.8 锚定窗体中的控件 464
16.9 在窗体上停靠控件 465
第17章 使用公用对话框 467
17.1 选择颜色 469
17.2 用FontDialog对话框来选择文字的样式 472
17.3 打开/保存文件 474
17.4 关于打印 479
17.5 选择打印机 482
17.6 设置页面选项 484
17.7 预览打印输出 486
第18章 使用代理和事件 488
18.1 在C#程序中使用事件 491
18.2 编写事件处理函数 493
18.3 使用代理给对象排序 495
18.4 使用静态代理 501
18.5 查看代理的调用列表 503
18.6 组合与删除代理中的方法 504
18.7 响应定时器事件 506
18.8 响应System.Threading.Timer事件 508