当前位置:首页 > 工业技术
C#技术揭秘
C#技术揭秘

C#技术揭秘PDF电子书下载

工业技术

  • 电子书积分:17 积分如何计算积分?
  • 作 者:(美)Tom Archer,(美)Andrew Whitechapel著;马朝晖等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2003
  • ISBN:7111122577
  • 页数:597 页
图书介绍:本书从C#本身说起,详细介绍了C#的特点、新增的功能以及它与C和C++的异同,是一本真正揭示C#技术内幕的书籍。
《C#技术揭秘》目录

目录译者序序一序二前言第一部分C#类的基本原理第1章 建立C#应用程序和库 2

1.1 “Hello,World”——命令行版本 2

1.2 “Hello,World”的代码解释 4

1.2.1一站式编程 4

1.2.2名称空间 4

1.2.3类和成员 6

1.2.4 Main方法 6

1.2.5 System.Console.WriteLine方法 7

1.2.6名称空间和using指令 7

1.2.7框架代码 8

1.2.8类的二义性 9

1.3“Hello,World”——Visual Studio.NET版本 10

1.4编译和运行.NET应用程序 11

1.5 “Hello,World”内部 13

1.6配件和模块 16

1.6.1配件概述 16

1.6.2配件的好处 17

1.6.3构建配件 18

1.6.4创建共享配件 21

1.6.5使用全局配件缓存 23

1.7小结 24

第2章 .NET类型系统 25

2.1所有东西都是对象 25

2.2.1值类型 27

2.2值类型和引用类型 27

2.3装箱和拆箱 28

2.2.2引用类型 28

2.3.1将值类型转换为引用类型 29

2.3.2将引用类型转换为值类型 29

2.3.3更多的装箱例子 30

2.4类型和别名 34

2.5类型之间的转换 34

2.6 CTS的好处 36

2.6.1语言互操作性 36

2.6.3类型安全 37

2.7小结 37

2.6.2单根的对象层次结构 37

第3章 类和结构 38

3.1定义类 38

3.2类成员 39

3.3访问修饰符 40

3.4 Main方法 41

3.4.1命令行参数 41

3.4.2从Main方法返回值 42

3.4.3多个Main方法 43

3.5构造器 44

3.5.1静态成员和实例成员 46

3.5.2构造器初始化器 47

3.5.3在构造器初始化器中指定运行时信息 51

3.6常量与只读字段 54

3.6.1常量 54

3.6.2只读字段 54

3.7继承 57

3.7.1多个接口 59

3.7.2封闭的类 60

3.8在C#中定义结构 61

3.8.1结构的使用 61

3.8.2使用结构的原则 63

3.9小结 65

4.1值和引用参数 66

第4章 方法 66

4.1.1 ref方法参数 67

4.1.2 out方法参数 70

4.2再论值和引用参数 73

4.3方法重载 77

4.3.1重载构造器 79

4.3.2继承与重载 81

4.4可变的方法参数 82

4.5虚拟方法 85

4.5.1方法重定义 85

4.5.2多态性 86

4.5.3 new和虚拟方法 91

4.5.4从构造器调用虚拟方法 93

4.6静态方法 95

4.6.1访问类成员 96

4.6.2静态构造器 97

4.7小结 98

第5章 特性、数组和索引器 99

5.1特性是灵巧字段 99

5.1.1定义和使用特性 100

5.1.2特性的内幕 101

5.1.3继承特性 104

5.1.4特性的高级用途 108

5.2数组 109

5.2.1声明数组 109

5.2.2一维数组示例 110

5.2.3多维数组 111

5.2.4查询秩 112

5.2.5锯齿形数组 113

5.3使用索引器像对待数组那样对待对象 115

5.3.1定义索引器 115

5.3.2索引器例子 116

5.3.3索引器的内幕 117

5.3.4设计原则 118

5.4小结 119

第6章 属性 120

6.1属性简介 120

6.2定义属性 121

6.3.1类属性 124

6.3查询属性 124

6.3.2方法属性 126

6.3.3字段属性 128

6.4属性参数 129

6.4.1位置参数和命名参数 130

6.4.2使用命名过的参数时的常见错误 131

6.4.3有效的属性参数类型 132

6.5 AttributeUsage属性 132

6.5.1定义属性目标 132

6.5.2单次使用和多次使用的属性 134

6.5.3指定属性继承规则 134

6.6属性标识符 136

6.7预定义的属性 138

6.7.1 Conditional属性 139

6.7.2 Obsolete属性 141

6.7.3 CLSCompliant属性 141

6.7.4 Dlllmport和StructLayout属性 142

6.7.5配件属性 144

6.8上下文属性 144

6.9小结 150

第7章 接口 151

7.1接口的用途 151

7.2声明接口 152

7.3实现接口 153

7.3.1使用is查询实现 155

7.3.2使用as查询实现 158

7.3.3接口与替代技术 161

7.4显式地限定接口成员名 163

7.4.1用接口进行名称隐藏 163

7.4.2避免名称的二义性 165

7.5接口与继承 169

7.6组合接口 172

7.7小结 173

第二部分编写代码第8章 表达式和操作符 176

8.1操作符的定义 176

8.2操作符的优先级 176

8.2.2左结合性和右结合性 177

8.2.1 c#如何决定优先级 177

8.2.3实际使用 178

8.3 c#操作符 178

8.3.1基本表达式操作符 179

8.3.2算术操作符 183

8.4数值转换 190

8.5位操作符 193

8.6关系操作符 196

8.7简单赋值操作符 197

8.8条件操作符 200

8.9小结 202

9.1选择语句 203

9.1.1 if语句 203

第9章 程序流控制 203

9.1.2 switch语句 207

9.2迭代语句 214

9.2.1 while语句 214

9.2.2 do/while语句 215

9.2.3 for语句 217

9.2.4 foreach语句 220

9.3使用跳转语句进行分支 223

9.3.1 break语句 223

9.3.2 continue语句 225

9.3.3声名狼藉的goto语句 227

9.3.4 return语句 232

9.4小结 233

第10章 字符串处理和正则表达式 234

10.1字符串 234

10.1.1字符串的格式化 236

10.1.2格式指定符 238

10.1.3对象和ToString 240

10.1.4数字字符串分析 241

10.1.5字符串和DateTime 243

10.1.6字符串的编码方式 245

10.1.7 StringBuilder类 246

10.1.8分解字符串 247

10.1.9扩展字符串 248

10.1.10字符串扣留 249

10.2正则表达式 251

10.2.1 Match和MatchCollection 254

10.2.2组和捕获 257

10.2.3字符串-修改表达式 258

10.2.4正则表达式选项 261

10.2.5编译正则表达式 262

10.3小结 265

第11章 用流进行文件I/O 266

11.1 流类 266

11.1.1 FileStream 267

11.1.2 StreamReader和StreamWriter 269

11.1.3内存和缓冲流 271

11.1.4字符串读取器和写出器 274

11.1.5二进制读取器和写出器 275

11.2文件系统类 277

11.2.1 Directory和DirectoryInfo 277

11.2.2 File和FileInfo 279

11.2.3分析路径 281

11.3流的非控制台使用方式 282

11.3.1 Windows OpenFileDialog 282

11.3.2读取Web页面 283

11.4串行化 284

11.4.1使用BinaryFormatter进行串行化 285

11.4.2使用SoapFormatter 287

11.4.3使用XmlSerializer进行串行化 288

11.4.4实现ISerializable 289

11.5小结 291

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

12.1异常处理概述 292

12.2基本的异常处理语法 293

12.2.1抛出异常 293

12.2.2捕获异常 294

12.2.3重新抛出一个异常 296

12.2.4使用finally进行清理 298

12.3重试代码 301

12.4错误处理技术的比较 303

12.4.1异常处理相对于返回编码的好处 303

12.4.2在正确的上下文中处理错误 305

12.4.3提高代码的可读性 306

12.4.4从构造器抛出异常 307

12.5使用System.Exception类 307

12.5.1构造一个Exception对象 307

12.5.2使用StaekTrace特性 310

12.5.3捕获多个异常类型 311

12.5.4派生自己的Exception类 312

12.6用异常处理设计代码 314

12.6.1 try块的设计问题 314

12.6.2 catch块的设计问题 317

12.7小结 319

13.1操作符重载 320

13.1.1操作符重载的语法 320

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

13.1.2操作符重载的规则和限制 321

13.1.3操作符重载示例 322

13.1.4 RGB颜色递增示例 324

13.1.5操作符重载的设计方针 328

13.2用户定义的转换 330

13.2.1用户定义的转换语法 330

13.2.2用户定义的转换的规则和限制 330

13.2.3用户定义的转换示例 331

13.3小结 341

第14章 委托和事件处理器 342

14.1将委托作为回调方法使用 342

14.2委托的内幕 344

14.3将委托定义为静态成员 347

14.4只在需要时创建委托 349

14.5多点委托 351

14.6使用多点委托定义事件 359

14.7小结 362

第15章 使用XML进行文档记录 363

15.1入门 363

15.1.1添加元素 365

15.1.2可以接受注释的代码构造 365

15.2编译器产生的元素ID 365

15.2.1字段、特性、事件和索引器 366

15.2.2方法 368

15.3 良构的XML 372

15.4注释网页 373

15.5元素标记和属性 374

15.5.1〈exception〉标记和cref属性 375

15.5.2 〈c〉、〈code〉和〈example〉标记 375

15.5.3〈include〉标记 376

15.5.4 〈list〉标记 378

15.6定制的格式化 379

15.7 XML与数据 381

15.8 小结 382

第三部分高级C#第16章 数值处理和Marh类 384

16.1 C#和.NET中的数值支持 384

16.1.1 Decimal类型是原始的类型吗 385

16.1.2数值后缀 386

16.1.3数值类型的各种名称 387

16.1.4数值字面值 388

16.2整数范围和溢出规则 390

16.3 Decimal类型 394

16.4 System.Math类 394

16.4.1 System.Math常量 394

16.4.2处理数值的正负号 394

16.4.3最小值和最大值 395

16.4.4用于取整和截短的方法 395

16.5小结 396

17.1实现枚举接口 397

第17章 集合和对象枚举 397

17.1.1使用枚举器对象 400

17.1.2使用foreach语句处理集合 401

17.2为什么需要两个接口 403

17.3构造枚举器对象 403

17.4创建具有版本的枚举器 404

17.5将IEnumerable和IEnumerator合并 407

17.6在允许枚举时保护数据 409

17.7值类型 411

17.7.1性能问题 412

17.7.2修改值类型的集合数据 419

17.8小结 422

18.1线程入门 423

第18章 多线程和异步编程 423

18.2线程处理的基本知识 424

18.2.1创建线程和Thread对象 424

18.2.2管理线程的生存周期 424

18.2.3销毁线程 426

18.2.4对线程进行调度 428

18.3与线程进行数据通信 432

18.4线程安全和同步 434

18.4.1使用Monitor类保护代码 434

18.4.2通过C#lock语句使用监视锁 440

18.4.3使用Mutex类对代码进行同步 441

18.5使用委托调用异步方法 443

18.7.1何时应该使用线程 447

18.6线程安全和.NET类 447

18.7线程方针 447

18.7.2何时不应该使用线程 448

18.8小结 449

第19章 利用反射查询元数据 450

19.1 ReflectionAPI层次结构 450

19.2rype类 450

19.3获得Type引用 450

19.3.1获取一个实例的类型 451

19.3.2从名称获取类型 451

19.3.3查询类型 452

19.4.1遍历配件的类型 455

19.4处理配件和模块 455

19.4.2列出配件的模块 459

19.5使用反射进行晚绑定 461

19.6使用反射实现抽象工厂 463

19.7动态地生成代码 465

19.8小结 468

第20章 固定和内存管理 469

20.1垃圾收集 469

20.2重定义Finalize 470

20.3强行进行垃圾收集 474

20.4 Dispose模式 476

20.5 IDisposable接口 479

20.5.1派生的可处置类 481

20.5.2防止重复处置 482

20.5.3对Dispose的语言支持 483

20.6垃圾收集器代 484

20.7弱引用 486

20.8不安全的代码 487

20.9固定 490

20.9.1固定数组元素 492

20.9.2间接引用成员操作符 495

20.9.3使用stackalloc 496

20.10 小结 498

第21章 从C#应用程序使用COM 499

21.1 COM在当今的.NET环境中处于什么位置 499

21.2.1创建ATL组件 500

21.2从C#使用COM组件 500

21.2.2从.NET应用程序使用COM组件 501

21.2.3绑定和使用COM组件 502

21.2.4使用COM组件进行动态类型发现 504

21.2.5对COM对象进行晚绑定 505

21.3事件处理 507

21.3.1 COM连接点的工作原理 507

21.3.2创建一个产生事件的ATLCOM组件 508

21.3.3使用委托进行事件处理 510

21.3.4在.NET应用程序中接收非托管的COM事件 512

21.4使用COM集合 515

21.4.1使用ATL创建COM集合对象 515

21.4.2在.NET应用程序中使用COM集合 519

21.4.3遍历.NET集合中的元素 520

21.5在托管代码中重用COM组件 522

21.5.1包含 522

21.5.2聚合 522

21.5.3通过混合模式的继承进行重用 523

21.5.4通过混合模式的包含进行重用 526

21.5.5NET对COM线程模型和场所的感知 527

21.6将方法关键字映射到IDL属性 528

21.7小结 529

第22章 在非托管代码中使用.NET组件 530

22.1通过COM创建和使用.NET组件 530

22.1.1从配件产生类型库和注册配件 531

22.1.2从Visual Basic 6客户使用组件 532

22.1.3 COM interop的内部机理 533

22.1.4探究产生的类型库 534

22.2使用属性影响产生的类型库元数据 540

22.2.1修改接口类型 540

22.2.2修改GUID和ProgID 542

22.2.3对COM隐藏公共类型 543

22.2.4修改类型的编组行为 544

22.3异常处理:.NET与COM 544

22.4在非托管事件接收器中处理来自.NET组件的事件 546

22.4.1创建产生事件的.NET组件 547

22.4.2在Visual Basic客户应用程序中处理事件 549

22.5.NET组件中的线程从属关系 550

22.6小结 555

第23章 安全性 556

23.1.NET安全性 556

23.2可检验的类型安全 557

23.3代码签名 561

23.3.1私有配件 561

23.3.2强名称配件 563

23.3.3全局配件缓存 566

22.3.4延迟签名配件 568

23.4密码服务 569

23.5.1证据 571

23.5代码访问安全性 571

23.5.2安全策略 572

23.5.3配置安全 575

23.5.4 CASpol 579

23.5.5强制式和声明式CAS 581

23.5.6标识权限 582

23.5.7配件权限请求 584

23.6基于角色的安全 585

23.6.1 PrincipalPermission请求 587

23.6.2模仿 588

23.7隔离的存储 589

23.8小结 590

附录A MSIL指令表 592

相关图书
作者其它书籍
返回顶部