《C#编程语言详解 第2版》PDF下载

  • 购买积分:20 如何计算积分?
  • 作  者:(美)海杰尔斯伯格(Hejlsberg,A.),(美)韦尔特马瑟(Wiltamuth,S.),(美)戈尔德(Golde,P.)著;韩江,王秀慧译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2007
  • ISBN:7121047055
  • 页数:716 页
图书介绍:C#是一种简单、现代、面向对象和类型安全的程序设计语言。本书由C#语言的架构师Anders Hejlsberg和设计小组的成员编写,并为C# 2.0进行了更新。全书从C#语言的简介开始,详细地介绍了C# 1.0的技术规范,并介绍了许多C# 2.0的新功能,包括泛型、匿名方法、迭代器、分部类型和可空类型等。本书对第1版中介绍的C#新增了许多功能,并作了很多改进。本书内容翔实,实例丰富,既可以作为高等院校学生学习C#的教材,也是希望深入探索C#编程知识的程序员的最权威的参考书。

第一篇 C#1.0 1

第1章 C#简介 3

1.1 Hello World 4

1.2 程序结构 5

1.3 类型和变量 7

1.4 表达式 11

1.5 语句 14

1.6 类和对象 18

1.6.1 成员 18

1.6.2 可访问性 19

1.6.3 基类 20

1.6.4 域 20

1.6.5 方法 21

1.6.6 其他函数成员 29

1.7 结构 34

1.8 数组 35

1.9 接口 37

1.10 枚举 39

1.11 委托 40

1.12 特性 42

第2章 词法结构 45

2.1 程序 45

2.2 文法 45

2.2.1 文法表示法 45

2.2.2 词法文法 47

2.2.3 句法文法 47

2.3 词法分析 47

2.3.1 行终结符 48

2.3.2 空白 49

2.3.3 注释 49

2.4 标记 51

2.4.1 Unicode字符转义序列 51

2.4.2 标识符 52

2.4.3 关键字 54

2.4.4 字面值 55

2.4.5 运算符和标点 61

2.5 预处理指令 61

2.5.1 条件编译符号 63

2.5.2 预处理表达式 64

2.5.3 声明指令 64

2.5.4 条件编译指令 66

2.5.5 诊断指令 69

2.5.6 区域指令 69

2.5.7 行指令 70

第3章 基本概念 73

3.1 应用程序启动 73

3.2 应用程序终止 74

3.3 声明 75

3.4 成员 77

3.4.1 命名空间成员 78

3.4.2 结构成员 78

3.4.3 枚举成员 79

3.4.4 类成员 79

3.4.5 接口成员 79

3.4.6 数组成员 79

3.4.7 委托成员 79

3.5 成员访问 79

3.5.1 已声明可访问性 80

3.5.2 可访问域 81

3.5.3 实例成员的受保护访问 84

3.5.4 可访问性约束 85

3.6 签名和重载 86

3.7 范围 87

名称隐藏 90

3.8 命名空间和类型名称 93

完全限定名 94

3.9 自动内存管理 95

3.10 执行顺序 99

第4章 类型 101

4.1 值类型 101

4.1.1 System.ValueType类型 102

4.1.2 默认构造函数 103

4.1.3 结构类型 104

4.1.4 简单类型 104

4.1.5 整型 105

4.1.6 浮点型 107

4.1.7 decimal类型 108

4.1.8 bool类型 109

4.1.9 枚举类型 109

4.2 引用类型 110

4.2.1 类类型 110

4.2.2 对象类型 111

4.2.3 string类型 111

4.2.4 接口类型 111

4.2.5 数组类型 112

4.2.6 委托类型 112

4.3 装箱和拆箱 112

4.3.1 装箱转换 112

4.3.2 拆箱转换 114

第5章 变量 115

5.1 变量类别 115

5.1.1 静态变量 116

5.1.2 实例变量 116

5.1.3 数组元素 116

5.1.4 值参数 117

5.1.5 引用参数 117

5.1.6 输出参数 117

5.1.7 局部变量 118

5.2 默认值 119

5.3 明确赋值 119

5.3.1 初始已赋值变量 120

5.3.2 初始未赋值变量 121

5.3.3 确定是否明确赋值的细则 121

5.4 变量引用 133

5.5 变量引用的原子性 133

第6章 转换 135

6.1 隐式转换 135

6.1.1 标识转换 136

6.1.2 隐式数值转换 136

6.1.3 隐式枚举转换 136

6.1.4 隐式引用转换 136

6.1.5 装箱转换 137

6.1.6 隐式常量表达式转换 137

6.1.7 用户自定义的隐式转换 137

6.2 显式转换 138

6.2.1 显式数值转换 138

6.2.2 显式枚举转换 140

6.2.3 显式引用转换 141

6.2.4 拆箱转换 142

6.2.5 用户自定义的显式转换 142

6.3 标准转换 142

6.3.1 标准隐式转换 142

6.3.2 标准显式转换 142

6.4 用户自定义的转换 143

6.4.1 允许的用户自定义转换 143

6.4.2 用户自定义转换的计算 143

6.4.3 用户自定义的隐式转换 144

6.4.4 用户自定义的显式转换 145

第7章 表达式 147

7.1 表达式的分类 147

表达式的值 148

7.2 运算符 149

7.2.1 运算符的优先级和结合性 149

7.2.2 运算符重载 151

7.2.3 一元运算符重载决策 153

7.2.4 二元运算符重载决策 153

7.2.5 候选用户自定义运算符 154

7.2.6 数值提升 154

7.3 成员查找 156

基类型 157

7.4 函数成员 157

7.4.1 自变量列表 162

7.4.2 重载决策 165

7.4.3 函数成员调用 168

7.5 基本表达式 170

7.5.1 字面值 170

7.5.2 简单名称 171

7.5.3 带括号的表达式 173

7.5.4 成员访问 173

7.5.5 调用表达式 176

7.5.6 元素访问 178

7.5.7 this访问 180

7.5.8 base访问 181

7.5.9 后缀增量和后缀减量运算符 181

7.5.10 new运算符 183

7.5.11 typeof运算符 189

7.5.12 checked和unchecked运算符 190

7.6 一元运算符 193

7.6.1 一元加运算符 193

7.6.2 一元减运算符 194

7.6.3 逻辑求反运算符 195

7.6.4 按位求补运算符 195

7.6.5 前缀增量和减量运算符 195

7.6.6 强制转换表达式 197

7.7 算术运算符 198

7.7.1 乘法运算符 198

7.7.2 除法运算符 199

7.7.3 余数运算符 201

7.7.4 加法运算符 202

7.7.5 减法运算符 205

7.8 移位运算符 207

7.9 关系和类型测试运算符 209

7.9.1 整数比较运算符 210

7.9.2 浮点比较运算符 210

7.9.3 小数比较运算符 211

7.9.4 布尔相等运算符 212

7.9.5 枚举比较运算符 212

7.9.6 引用类型相等运算符 212

7.9.7 字符串相等运算符 214

7.9.8 委托相等运算符 214

7.9.9 is运算符 215

7.9.10 as运算符 216

7.10 逻辑运算符 216

7.10.1 整数逻辑运算符 217

7.10.2 枚举逻辑运算符 217

7.10.3 布尔逻辑运算符 218

7.11 条件逻辑运算符 218

7.11.1 布尔条件逻辑运算符 219

7.11.2 用户自定义的条件逻辑运算符 219

7.12 条件运算符 220

7.13 赋值运算符 221

7.13.1 简单赋值 222

7.13.2 复合赋值 224

7.13.3 事件赋值 226

7.14 表达式 226

7.15 常量表达式 226

7.16 布尔表达式 228

第8章 语句 229

8.1 结束点和可到达性 230

8.2 块 232

语句列表 232

8.3 空语句 233

8.4 标记语句 233

8.5 声明语句 234

8.5.1 局部变量声明 234

8.5.2 局部常量声明 236

8.6 表达式语句 236

8.7 选择语句 237

8.7.1 if语句 237

8.7.2 switch语句 238

8.8 迭代语句 243

8.8.1 while语句 243

8.8.2 do语句 244

8.8.3 for语句 244

8.8.4 foreach语句 246

8.9 跳转语句 248

8.9.1 break语句 250

8.9.2 continue语句 251

8.9.3 goto语句 251

8.9.4 return语句 253

8.9.5 throw语句 254

8.10 try语句 255

8.11 checked语句和unchecked语句 258

8.12 lock语句 259

8.13 using语句 260

第9章 命名空间 263

9.1 编译单元 263

9.2 命名空间声明 264

9.3 using指令 265

9.3.1 using别名指令 266

9.3.2 using命名空间指令 269

9.4 命名空间成员 271

9.5 类型声明 271

第10章 类 273

10.1 类声明 273

10.1.1 类修饰符 273

10.1.2 类基规范 275

10.1.3 类主体 277

10.2 类成员 277

10.2.1 继承 279

10.2.2 new修饰符 280

10.2.3 访问修饰符 280

10.2.4 构成类型 280

10.2.5 静态成员和实例成员 280

10.2.6 嵌套类型 281

10.2.7 保留成员名称 286

10.3 常量 287

10.4 域 290

10.4.1 静态域和实例域 291

10.4.2 只读域 292

10.4.3 易失域 293

10.4.4 域初始化 295

10.4.5 变量初始值设定项 295

10.5 方法 299

10.5.1 方法参数 301

10.5.2 静态方法和实例方法 308

10.5.3 虚方法 308

10.5.4 重写方法 311

10.5.5 密封方法 313

10.5.6 抽象方法 313

10.5.7 外部方法 315

10.5.8 方法主体 316

10.5.9 方法重载 317

10.6 属性 317

10.6.1 静态属性和实例属性 318

10.6.2 访问器 319

10.6.3 虚、密封、重写和抽象访问器 325

10.7 事件 327

10.7.1 类似域的事件 329

10.7.2 事件访问器 331

10.7.3 静态事件和实例事件 332

10.7.4 虚、密封、重写和抽象访问器 333

10.8 索引器 333

索引器重载 338

10.9 运算符 338

10.9.1 一元运算符 340

10.9.2 二元运算符 341

10.9.3 转换运算符 341

10.10 实例构造函数 343

10.10.1 构造函数初始值设定项 344

10.10.2 实例变量初始值设定项 345

10.10.3 构造函数的执行 346

10.10.4 默认构造函数 348

10.10.5 私有构造函数 348

10.10.6 可选的实例构造函数参数 349

10.11 静态构造函数 349

10.12 析构函数 352

第11章 结构 355

11.1 结构声明 355

11.1.1 结构修饰符 356

11.1.2 结构接口 356

11.1.3 结构主体 356

11.2 结构成员 356

11.3 类和结构的区别 357

11.3.1 值语义 357

11.3.2 继承 359

11.3.3 赋值 359

11.3.4 默认值 359

11.3.5 装箱和拆箱 360

11.3.6 this的意义 360

11.3.7 域初始值设定项 361

11.3.8 构造函数 361

11.3.9 析构函数 362

11.3.10 静态构造函数 362

11.4 结构示例 363

11.4.1 数据库整型 363

11.4.2 数据库布尔类型 365

第12章 数组 367

12.1 数组类型 367

System.Array类型 368

12.2 数组创建 369

12.3 数组元素访问 369

12.4 数组成员 369

12.5 数组协变 369

12.6 数组初始值设定项 370

第13章 接口 373

13.1 接口声明 373

13.1.1 接口修饰符 373

13.1.2 基接口 374

13.1.3 接口主体 375

13.2 接口成员 375

13.2.1 接口方法 376

13.2.2 接口属性 377

13.2.3 接口事件 377

13.2.4 接口索引器 377

13.2.5 接口成员访问 378

13.3 完全限定接口成员名 380

13.4 接口实现 380

13.4.1 显式接口成员实现 381

13.4.2 接口映射 384

13.4.3 接口实现继承 387

13.4.4 接口重新实现 389

13.4.5 抽象类和接口 391

第14章 枚举 393

14.1 枚举声明 393

14.2 枚举修饰符 394

14.3 枚举成员 394

14.4 System.Enum类型 397

14.5 枚举的值和运算 397

第15章 委托 399

15.1 委托声明 399

15.2 委托实例化 402

15.3 委托调用 403

第16章 异常 407

16.1 导致异常的原因 407

16.2 System.Exception类 408

16.3 异常的处理方式 408

16.4 公共异常类 409

第17章 特性 411

17.1 特性类 411

17.1.1 特性用法 411

17.1.2 定位和命名参数 413

17.1.3 特性参数类型 414

17.2 特性专用化 414

17.3 特性实例 420

17.3.1 特性的编译 421

17.3.2 特性实例的运行时检索 421

17.4 保留的特性 422

17.4.1 AttributeUsage特性 422

17.4.2 Conditional特性 423

17.4.3 Obsolete特性 427

17.5 交互操作的特性 428

17.5.1 与COM和Win32组件的交互操作 428

17.5.2 与其他.NET语言的交互操作 428

第18章 不安全代码 429

18.1 不安全上下文 429

18.2 指针类型 433

18.3 固定变量和可移动变量 436

18.4 指针转换 437

18.5 表达式中的指针 438

18.5.1 指针间接寻址 439

18.5.2 指针成员访问 439

18.5.3 指针元素访问 440

18.5.4 address-of运算符 441

18.5.5 指针递增和递减 442

18.5.6 指针算法 443

18.5.7 指针比较 444

18.5.8 sizeof运算符 444

18.6 固定语句 446

18.7 堆栈分配 450

18.8 动态内存分配 451

第二篇 C#2.0 455

第19章 C#2.0简介 457

19.1 泛型 458

19.1.1 为什么要使用泛型 458

19.1.2 创建和使用泛型 459

19.1.3 泛型类型实例化 460

19.1.4 约束 460

19.1.5 泛型方法 462

19.2 匿名方法 463

方法组转换 466

19.3 迭代器 467

19.4 分部类型 471

19.5 可空类型 472

第20章 泛型 477

20.1 泛型类声明 477

20.1.1 类型参数 478

20.1.2 实例类型 479

20.1.3 基规范 480

20.1.4 泛型类的成员 480

20.1.5 泛型类中的静态域 481

20.1.6 泛型类中的静态构造函数 482

20.1.7 访问受保护成员 482

20.1.8 泛型类中的重载 483

20.1.9 参数数组方法和类型参数 484

20.1.10 重写与泛型类 484

20.1.11 泛型类中的运算符 485

20.1.12 泛型类中的嵌套类型 487

20.1.13 应用程序入口点 488

20.2 泛型结构声明 488

20.3 泛型接口声明 488

20.3.1 所实现接口的唯一性 488

20.3.2 显式接口成员实现 490

20.4 泛型委托声明 490

20.5 构造类型 491

20.5.1 类型自变量 493

20.5.2 开放和封闭类型 493

20.5.3 构造类型的基类和接口 494

20.5.4 构造类型的成员 494

20.5.5 构造类型的可访问性 495

20.5.6 转换 495

20.5.7 using别名指令 496

20.5.8 属性 497

20.5.9 数组和泛型IList接口 497

20.6 泛型方法 498

20.6.1 泛型方法签名 499

20.6.2 虚泛型方法 500

20.6.3 调用泛型方法 501

20.6.4 类型自变量推断 502

20.6.5 语法多义性 504

20.6.6 通过委托使用泛型方法 505

20.6.7 不能是泛型的成员 506

20.7 约束 506

20.7.1 满足约束 511

20.7.2 类型参数上的成员查找 513

20.7.3 类型参数和装箱 513

20.7.4 涉及类型参数的转换 515

20.8 表达式和语句 517

20.8.1 对象创建表达式 517

20.8.2 typeof运算符 517

20.8.3 引用相等运算符 519

20.8.4 is运算符 520

20.8.5 as运算符 520

20.8.6 异常语句 520

20.8.7 lock语句 520

20.8.8 using语句 521

20.8.9 foreach语句 521

20.9 查找规则的修改 521

20.9.1 命名空间和类型名称 521

20.9.2 成员查找 524

20.9.3 适用函数成员 526

20.9.4 更好的函数成员 526

20.9.5 简单名称 527

20.9.6 成员访问 529

20.9.7 方法调用 531

20.10 右移语法变化 533

第21章 匿名方法 535

21.1 匿名方法表达式 535

21.2 匿名方法签名 535

21.3 匿名方法转换 536

21.4 匿名方法块 537

21.5 外层变量 538

21.5.1 捕获的外层变量 538

21.5.2 局部变量实例化 539

21.6 匿名方法计算 541

21.7 委托实例相等性 542

21.8 明确赋值 543

21.9 方法组转换 544

21.10 委托创建表达式 546

21.11 实现示例 546

第22章 迭代器 551

22.1 迭代器块 551

22.1.1 枚举器接口 551

22.1.2 可枚举接口 552

22.1.3 产生类型 552

22.1.4 this访问 552

22.2 枚举器对象 552

22.2.1 MoveNext方法 553

22.2.2 Current属性 555

22.2.3 Dispose方法 555

22.3 可枚举对象 555

GetEnumerator方法 556

22.4 yield语句 556

明确赋值 558

22.5 实现示例 558

第23章 分部类型 567

23.1 分部声明 567

23.1.1 属性 568

23.1.2 修饰符 568

23.1.3 类型参数和约束 568

23.1.4 基类 569

23.1.5 基接口 569

23.1.6 成员 570

23.2 名称绑定 571

第24章 可空类型 573

24.1 可空类型 573

24.1.1 成员 573

24.1.2 默认值 574

24.1.3 值类型约束 574

24.2 转换 574

24.2.1 null字面值转换 575

24.2.2 可空转换 575

24.2.3 装箱和拆箱转换 576

24.2.4 允许的用户自定义转换 577

24.2.5 用户自定义转换的计算 577

24.2.6 提升的转换 578

24.2.7 用户自定义的隐式转换 578

24.2.8 用户自定义的显式转换 579

24.3 表达式 580

24.3.1 提升运算符 580

24.3.2 允许的用户自定义运算符 581

24.3.3 运算符重载决策 582

24.3.4 相等操作符和空 582

24.3.5 is运算符 582

24.3.6 as运算符 583

24.3.7 复合赋值 583

24.3.8 bool?类型 584

24.3.9 空合并运算符 584

第25章 其他功能 587

25.1 属性访问器的可访问性 587

25.1.1 访问器声明 587

25.1.2 访问器的使用 588

25.1.3 重写和接口实现 589

25.2 静态类 590

25.2.1 静态类声明 590

25.2.2 引用静态类类型 591

25.3 命名空间别名限定符 592

25.3.1 限定的别名成员 594

25.3.2 别名的唯一性 595

25.4 extern别名 596

extern别名指令 598

25.5 pragma指令 600

pragma warning 600

25.6 默认值表达式 601

25.7 条件特性类 602

25.8 固定大小缓冲区 603

25.8.1 固定大小缓冲区的声明 603

25.8.2 表达式中的固定大小缓冲区 605

25.8.3 Fixed语句 606

25.8.4 明确赋值检查 607

第三篇 附录 609

附录A 文档注释 611

附录B 语法 635

索引 675