《C#技术内幕》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:(美)Tom Archer著;侯晓霞,柴洪辉译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2002
  • ISBN:7900637591
  • 页数:352 页
图书介绍:本书分为基础篇、C#类基础、编写代码和高级C#4个部分,分别描述了关于C#和.NET开发环境的一个特定方面的内容,其中包括:C#编程原则、类型系统、特性、多线程编程等。

第Ⅰ部分 基础篇 1

第1章 面向对象编程的基础知识 1

1.1 一切都是“对象” 2

1.1.1 对象和类 5

1.1.2 实例化 6

1.2 面向对象编程语言的三大原则 7

1.2.1 封装 8

1.2.2 继承 10

1.2.3 多态性 13

1.3 本章小结 16

第2章Microsoft.NET简介 17

2.1 Microsoft.NET平台 17

2.2 .NET框架 18

2.2.1 Windows DNA和.NET 18

2.2.2 公共语言运行环境 18

2.2.3 .NET框架类库 19

2.2.4 Microsoft中间语言和JITters 21

2.2.5 统一的类型系统 22

2.2.6 元数据和反射 23

2.2.7 安全问题 24

2.2.8 部署 24

2.2.9 与非控代码的互用性 25

2.3 本章小结 26

第3章 C#应用程序简介 27

3.1 编写第一个C#应用程序 27

3.1.1 选择编辑器 27

3.1.2 “Hello,World” 29

3.1.3 使用命令行编译器 30

3.1.4 运行应用程序 31

3.2 代码详解 32

3.2.1 “直达式”编程 32

3.2.2 类和成员 32

3.2.5 名称空间和指示符using 33

3.2.4 System.console.WriteLine方法 33

3.2.3 Main方法 33

3.2.6 骨架代码 35

3.3 出错情况 36

3.4 ILDASM研究 37

3.5 C#编程原则 41

3.5.1 何时定义您自己的名称空间 41

3.5.2 命名原则 41

3.5.3 命名规范标准 42

3.6 本章小结 44

第Ⅱ部分 C#类基础 47

第4章 类型系统 47

4.1 一切都是对象 47

4.2 数值类型和引用类型 48

4.2.1 数值类型 48

4.2.2 引用类型 48

4.3 装箱与开箱 49

4.4 所有类型的根:System.object 50

4.5 类型和别名 51

4.6 类型之间的转换 52

4.7 名称空间 54

4.8 CTS的好处 56

4.8.1 语言互用性 56

4.8.2 单根的对象层次结构 56

4.8.3 类型安全 57

4.9 本章小结 57

第5章 类 58

5.1 定义类 58

5.2 类的成员 58

5.3 访问限定符 59

5.4 Main方法 61

5.4.1 命令行参数 61

5.4.2 返回值 62

5.4.3 多个Main方法 63

5.5 构造函数 64

5.5.1 静态成员和实例成员 66

5.5.2 构造函数的初始化函数 67

5.6 常量和只读字段 70

5.6.1 常量 71

5.6.2 只读字段 71

5.7 对象清除和资源管理 73

5.7.1 历史回顾 74

5.7.2 确定性结束 74

5.7.3 性能 76

5.7.4 完美的解决方案 81

5.7.5 近乎完美的解决方案 82

5.7.6 Dispose设计模式 83

5.8 继承 84

5.8.1 多接口 86

5.8.2 封装类 87

5.9 本章小结 88

第6章 方法 89

6.1 方法参数“ref”和“out” 89

6.2 方法重载 94

6.3 可变的方法参数 96

6.4 虚拟方法 98

6.4.1 方法覆盖 98

6.4.2 多态性 99

6.5 静态方法 106

6.6 本章小结 108

第7章 属性、数组和索引器 109

7.1 属性——智能字段 109

7.1.1 定义和使用属性 110

7.1.2 编译器的工作原理 111

7.1.3 只读属性 113

7.1.4 继承属性 114

7.1.5 属性的高级使用 114

7.2.1 声明数组 115

7.2 数组 115

7.2.2 一维数组 116

7.2.3 多维数组 117

7.2.4 查询秩 119

7.2.5 锯齿状数组 120

7.3 使用索引器将对象当作数组对待 122

7.3.1 定义索引器 123

7.3.2 索引器示例程序 123

7.3.3 设计规则 125

7.4 本章小结 126

第8章 特性 127

8.1 特性的介绍 127

8.2 特性的定义 128

8.3 对特性进行查询 130

8.3.1 类的特性 130

8.3.2 方法的特性 132

8.3.3 字段的特性 134

8.4.1 定位参数和命名参数 136

8.4 特性的参数 136

8.4.2 使用命名参数时的常见错误 138

8.4.3 有效的特性参数类型 138

8.5 AttributeUsage特性 139

8.5.1 定义一个特性目标 139

8.5.2 单次特性和多次特性 141

8.5.3 指定继承特性的规则 142

8.6 特性标识符 143

8.7 本章小结 144

第9章 接口 145

9.1 接口的应用 145

9.2 声明接口 147

9.3 实现接口 148

9.3.1 使用is来查询实现 150

9.3.2 使用is来查询实现 153

9.4 显式的按口成员名字限定 157

9.4.1 接口的名字隐藏 157

9.4.2 避免名字模糊性 160

9.5 接口和继承 164

9.6 合并接口 167

9.7 本章小结 169

第Ⅲ部分 编定代码 171

第10章 表达式和操作符 171

10.1 已定义的操作符 171

10.2 操作符的优先级 172

10.2.1 C#如何判断优先级 172

10.2.2 左联合性和右联合性 173

10.2.3 实际使用 174

10.3 C#操作符 175

10.3.1 初级表达式操作符 175

10.3.2 数学操作符 179

10.3.3 关系操作符 188

10.3.4 简单赋值操作符 190

10.4 本章小结 193

11.1.1 if语句 194

第11章 程序流程控制 194

11.1 选择语句 194

11.1.2 多个else子句 195

11.1.3 C#如何强制使用if规则 197

11.1.4 switch语句 199

11.1.5 组合情况标签 201

11.1.6 在switch语句中设有“贯行” 203

11.2 迭代语句 204

11.2.1 while语句 204

11.2.2 do/while语句 206

11.2.3 for语句 208

11.2.4 嵌套循环 209

11.2.5 使用逗号操作符 210

11.2.6 foreach语句 211

11.3 跳转语句 213

11.3.1 break语句 213

11.3.2 中断无究循环 214

11.3.3 continue语句 216

11.3.4 “声名狼藉”的goto语句 217

11.3.5 return语句 223

11.4 本章小结 223

第12章 用异常进行错误处理 224

12.1 异常处理概览 224

12.2 异常处理的基本语法 225

12.2.1 抛出异常 225

12.2.2 截获异常 226

12.2.3 重抛异常 227

12.2.4 用finally进行清除 228

12.3 错误处理技术之比较 229

12.3.1 异常处理相对于返回代码的优点 229

12.3.2 在正确的上下文环境中处理错误 231

12.3.3 提高代码的可读性 232

12.4 使用System,Exception类 234

12.3.4 从构造函数抛出异常 234

12.4.1 构造一个Exception对象 235

12.4.2 使用StackTrace属性 237

12.4.3 截获多个异常类型 238

12.4.4 派生出自己的Exception类 239

12.5 设计具有异常处理功能的代码 241

12.5.1 使用try块时的设计注意事项 241

12.5.2 使用catch块时的设计注意事项 243

12.6 本章小结 245

第13章 操作符重载和用户定义的转换 246

13.1 操作符重载 246

13.1.1 语法和例子 247

13.1.2 可重载操作符 250

13.1.3 操作符重载的限制 250

13.1.4 设计准则 250

13.2 用户定义的转换 251

13.3 本章小结 257

14.1 将代表用作回调方法 258

第14章 代表和事件处理器 258

14.2 把代表定义为静态成员 261

14.3 仅在需要时创建代表 263

14.4 代表构成 265

14.5 定义具有代表的事件 272

14.6 本章小结 276

第Ⅳ部分 高级C# 277

第15章 多线程编程 277

15.1 线程的基本知识 277

15.1.1 线程与多任务 278

15.1.2 上下文切换 278

15.2 C#语言中的多线程应用程序 278

15.4.4 线程安全和. NET类 279

15.3 线程处理 280

15.3.1 AppDomain 280

15.3.2 Thread类 280

15.3.3 线程调度 284

15.4.1 使用Monitor类保护代码 288

15.4 线程安全和同步 288

15.4.2 用C#中的lock语句使用Monitor锁 293

15.4.3 通过使用Mutex类同步化代码 294

15.5 使用线程的原则 297

15.5.1 何时使用线程 297

15.5.2 保时不应该使用线程 298

15.6 本章小结 299

第16章 利用反射查询元数据 300

16.1 反射API层次 300

16.2 Type类 301

16.2.1 检索一个实例的类型 301

16.2.2 根据名字检索类型 301

16.2.3 查询类型 302

16.3 使用组合体和模块 304

16.3.1 迭代组合体的类型 305

16.3.2 列出组合体的模块 307

16.4 用反射进行后期绑定 309

16.5 在运行时刻创建并执行代码 312

16.6 本章小结 316

第17章 与非控代码互操作 317

17.1 平台启用服务 317

17.1.1 声明导出的DLL函数 317

17.1.2 与C#共用回调函数 320

17.1.3 江集和PInvoke 321

17.2 编写非安全代码 322

17.2.1 在C#中使用指针 323

17.2.2 fixed语句 324

17.3 COM互操作性 326

17.3.1 一个全新的领域 326

17.3.2 入门 326

17.3.3 从COM类型库生成元数据 328

17.3.4 早期绑定COM组件 330

17.3.5 利用动态类型探索选择COM接口 332

17.3.6 后期绑定COM组件 333

17.3.7 COM线程模型 335

17.4 本章小结 336

第18章 使用组合体 338

18.1 组合体概览 338

18.2 组合体的优点 339

18.2.1 组合体的打包 340

18.2.2 组合体的部署 340

18.2.3 组合体的版本管理 340

18.3 建立组合体 341

18.4 创建共享组合体 343

18.5 使用全局组合体缓存区 345

18.6 组合体的版本管理 347

18.6.1 QFE和默认版本管理策略 350

18.6.2 创建安全模式部署文件 350

18.6.3 使用组合体的特定版本 351

18.7 本章小结 352