首页>参考读物>计算机科学与技术>综合

C#程序设计语言(原书第3版)
作者 : (美)Anders Hejlsberg; Mads Torgersen; Scott Wiltamuth; Peter Golde
译者 : 顾雁宏 徐旭铭 译
出版日期 : 2009-10-22
ISBN : 978-7-111-28261-7
定价 : 79.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 563
开本 : 16
原书名 : C# Programming Language, 3E
原出版社: Pearson Education Asia
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

C#语言结合了快速应用开发语言的高效和C/C++语言的强大。现在C# 3.0又加入了函数式编程技术和语言集成查询(LINQ,Language INtegrated Query)。本书正是C# 3.0的权威技术指南。
对任何希望深入理解C#的程序员来说,这本书都是绝对不能错过的参考经典。

图书特色

C#程序设计语言(原书第3版)
(美)Anders Hejlsberg
Mads Torgersen
Scott Wiltamuth
Peter Golde 著

“据我的经验,我敢说每个程序员在读这本书的时候都至少会有一次‘啊,原来如此’的感叹,它能让你的编程水平更上一层楼。”
—— 选自Don Box的序


C#语言结合了快速应用开发语言的高效和C/C++语言的强大。现在C# 3.0又加入了函数式编程技术和语言集成查询(LINQ,Language INtegrated Query)。本书正是C# 3.0的权威技术指南。
这一版由C#的缔造者Anders Hejlsberg和他的同事们合著,全部内容都更新到了C# 3.0版。本书提供了C# 3.0语言完整的规格说明、参考资料、范例代码和来自九位卓越的C#大师的详细注解。
这些注解所达到的深度和广度是很难在其他书中找到的。本书的正文介绍了C#的概念,而这些恰到好处的注解则解释了为什么这些特性是重要的,应该怎么使用它们,它们和其他语言的关系是什么,甚至它们是如何进化而来的。
对任何希望深入理解C#的程序员来说,这本书都是不容错过的经典书籍。

作者简介
Anders Hejlsberg 是编程界的传奇人物。他是C#语言的架构师,同时也是微软技术专家。他在1996年加入微软,之前13年的职业生涯则是在Borland度过,他曾经是Delphi和Turbo Pascal的首席架构师。
Mads Torgersen 是微软的资深程序经理。作为C#的程序经理,他负责召开C#语言的设计会议及维护C#语言的规范。在2005年加入微软之前,Mads是奥尔胡斯大学的副教授,主要教授和研究面对对象编程语言。在那里,他领导的小组设计实现了Java的泛型通配符。
Scott Wiltamuth 是Visual Studio的合作程序经理。他在微软做过很多面向程序员的项目,包括Visual Basic、VBScript、Jscript、Visual J++和Visual C#。Scott是C#语言的设计师之一,他拥有斯坦福大学计算机科学硕士学位。
Peter Golde 在离开微软之前是微软C#编译器的首席程序员。他作为微软在ECMA委员会(这个委员会负责了C#的标准化工作)的主要代表,领导实现了C#编译器并参与了语言的设计。

图书前言

C#项目始于10年之前的1998年12月,当初的目标是要为全新的(还未命名的).NET平台创造一种简单、现代化、面对对象和类型安全的编程语言。一路走来,C#也算是历经坎坷。现在这门语言已经有超过一百万的程序员,发布了3个版本,其中每一版都加入许多重大的新特性。
  而本书也一样出到了第3版。作为一本C#语言完整的技术规范,第3版和之前的两个版本有很多不同的地方。其中最显著的当然就是它覆盖了所有C# 3.0的新特性,包括对象和集合初始化、匿名类型、lambda表达式、查询表达式和局部方法。绝大多数这些特性都是为了支持一种更加函数式和声明式的编程风格,具体来讲,就是语言集成查询(LINQ),它提供了一种统一的方式来查询不同数据源的数据。而LINQ又大量构建在一些C# 2.0引入的特性之上,比如泛型、迭代器和局部类型。
  第3版中的另一个变化是所有的规范说明都重新组织了。在第2版里,C# 2.0引入的特性和原本C# 1.0中的特性是分开描述的。要是再加上一套新特性的话,这个方法就没用了—读者需要从3个不同的地方获取相关的信息,本书的实用性将会大打折扣。所以,本书会按照主题来组织内容,3个语言版本中的特性被放在一起来介绍。
  最后一个和之前版本区别的地方就是本书包含了大量的注解。我们很幸运地请到了一些世界级的C#和.NET专家,在书中各处以注解的形式为我们提供了出色的指导、背景和观点。我们很高兴这些注解和本书的核心内容相辅相成,让C#的这些特性跃然纸上。
  创造C#语言是很多人共同努力的结果。C# 1.0的设计团队由Anders Hejlsberg、Scott Wiltamuth、Peter Golde、Peter Sollich和Eric Gunnerson组成。而C# 2.0团队的成员有Anders Hejlsberg、Peter Golde、Peter Hallam、Shon Katzenberger、Todd Proebsting和Anson Horton。此外,C#和.NET公共语言运行时(Common Language Runtime)中泛型的设计和实现是基于微软研究院里Don Syme和Andrew Kennedy构建的“Gyro”原型之上。C# 3.0则是由Anders Hejlsberg、Peter Hallam、Shon Katzenberger、Dinesh Kulkarni、Erik Meijer、Mads Torgersen和Matt Warren负责设计。
  要感谢所有影响了C#设计的人是不可能的,尽管如此我们还是要感谢你们。闭门造车是不会有好设计的,所以来自我们庞大和热情的程序员社区的意见和建议都是无价的。
  C#是(并将继续是)我们工作过的最有挑战性和最刺激的项目之一。希望你们用得开心,我们也做得高兴。
  Anders Hejlsberg
  Mads Torgersen
  Scott Wiltamuth
  华盛顿西雅图
  2008年7月

上架指导

程序设计

作者简介

(美)Anders Hejlsberg; Mads Torgersen; Scott Wiltamuth; Peter Golde:暂无简介

译者简介

顾雁宏 徐旭铭 译:暂无简介

图书目录


作者简介
注解者简介
前言
第1章  介绍 1
1.1  Hello,World 2
1.2  程序结构 3
1.3  类型和变量 5
1.4  表达式 7
1.5  语句 9
1.6  类和对象 13
1.6.1  成员 13
1.6.2  访问控制 14
1.6.3  类型参数 14
1.6.4  基类 15
1.6.5  字段 16
1.6.6  方法 17
1.6.7  其他函数成员 25
1.7  结构 30
1.8  数组 32
1.9  接口 34
1.10  枚举 35
1.11  委托 37
1.12  特性 40
第2章  词法结构 42
2.1  程序 42
2.2  文法 42
2.2.1  文法表示法 42
2.2.2  词法文法 43
2.2.3  语法文法 43
2.3  词法分析 43
2.3.1  行终结符 44
2.3.2  注释 45
2.3.3  空白符 46
2.4  标记 46
2.4.1  Unicode字符转义序列 46
2.4.2  标识符 47
2.4.3  关键字 49
2.4.4  字量 50
2.4.5  操作符和标点符号 56
2.5  预处理指令 56
2.5.1  条件编译符号 57
2.5.2  预处理表达式 58
2.5.3  声明指令 58
2.5.4  条件编译指令 59
2.5.5  诊断指令 62
2.5.6  区域指令 63
2.5.7  行指令 63
2.5.8  编译指示指令 64
第3章  基本概念 66
3.1  应用程序起始 66
3.2  应用程序终止 67
3.3  声明 67
3.4  成员 70
3.4.1  命名空间成员 70
3.4.2  结构成员 70
3.4.3  枚举成员 71
3.4.4  类成员 71
3.4.5  接口成员 71
3.4.6  数组成员 71
3.4.7  委托成员 71
3.5  成员访问 71
3.5.1  声明可访问性 72
3.5.2  可访问域 73
3.5.3  实例成员的保护访问 75
3.5.4  访问限制 77
3.6  签名和重载 78
3.7  作用域 79
3.7.1  名字隐藏 82
3.8  命名空间和类型名称 84
3.8.1  完全限定名 86
3.9  自动化内存管理 87
3.10  执行顺序 91
第4章  类型 92
4.1  值类型 92
4.1.1  System.ValueType类型 93
4.1.2  默认构造函数 93
4.1.3  结构类型 94
4.1.4  简单类型 94
4.1.5  整数类型 95
4.1.6  浮点数类型 96
4.17  decimal类型 97
4.1.8  bool类型 98
4.1.9  枚举类型 99
4.1.10  可空值类型 99
4.2  引用类型 100
4.2.1  类类型 100
4.2.2  Object类型 101
4.2.3  String类型 101
4.2.4  接口类型 101
4.2.5  数组类型 101
4.2.6  委托类型 101
4.3  装箱和拆箱 102
4.3.1  装箱转换 102
4.3.2  拆箱转换 103
4.4  构造类型 104
4.4.1  类型实参 105
4.4.2  开放式和封闭式类型 105
4.4.3  绑定和未绑定类型 106
4.4.4  满足限制 106
4.5  类型参数 107
4.6  表达式树类型 108
第5章  变量 110
5.1  变量类别 110
5.1.1  静态变量 110
5.1.2  实例变量 110
5.1.3  数组元素 111
5.1.4  值参数 111
5.1.5  引用参数 111
5.1.6  输出参数 112
5.1.7  局部变量 112
5.2  默认值 113
5.3  明确赋值 114
5.3.1  初始赋值的变量 114
5.3.2  未赋初值的变量 115
5.3.3  确定明确赋值的精确规则 115
5.4  变量引用 125
5.5  变量引用的原子性 125
第6章  转换 126
6.1  隐式转换 126
6.1.1  标识转换 127
6.1.2  隐式数字转换 127
6.1.3  隐式枚举转换 127
6.1.4  隐式可空值转换 128
6.1.5  Null字量转换 128
6.1.6  隐式引用转换 128
6.1.7  装箱转换 129
6.1.8  隐式常量表达式转换 130
6.1.9  带类型参数的隐式转换 130
6.1.10  自定义隐式转换 130
6.1.11  匿名函数转换和方法组转换 130
6.2  显式转换 130
6.2.1  显式数字转换 131
6.2.2  显式枚举转换 132
6.2.3  显式可空值转换 133
6.2.4  显式引用转换 133
6.2.5  拆箱转换 134
6.2.6  带类型参数的显式转换 134
6.2.7  自定义显式转换 135
6.3  标准转换 136
6.3.1  标准隐式转换 136
6.3.2  标准显式转换 136
6.4  自定义转换 136
6.4.1  允许的自定义转换 136
6.4.2  提升转换操作符 137
6.4.3  自定义转换的计算 137
6.4.4  自定义隐式转换 138
6.4.5  自定义显式转换 139
6.5  匿名函数转换 140
6.5.1  匿名函数到委托类型转换的计算 140
6.5.2  匿名函数到表达式树类型转换的
计算 141
6.5.3  实现举例 141
6.6  方法组转换 144
第7章  表达式 147
7.1  表达式分类 147
7.1.1  表达式的值 148
7.2  操作符 148
7.2.1  操作符优先级和结合性 149
7.2.2  操作符重载 150
7.2.3  一元操作符重载决策 151
7.2.4  二元操作符重载决策 151
7.2.5  候选自定义操作符 152
7.2.6  数字提升 152
7.2.7  提升操作符 154
7.3  成员查找 154
7.3.1  基础类型 156
7.4  函数成员 156
7.4.1  参数列表 158
7.4.2  类型推导 160
7.4.3  重载决策 165
7.4.4  函数成员调用 168
7.5  基础表达式 169
7.5.1  字量 170
7.5.2  简单名字 170
7.5.3  括号表达式 172
7.5.4  成员访问 173
7.5.5  调用表达式 175
7.5.6  元素访问 180
7.5.7  this访问 182
7.5.8  base访问 182
7.5.9  后缀递增和递减操作符 183
7.5.10  new操作符 184
7.5.11  typeof操作符 195
7.5.12  checked和unchecked操作符 197
7.5.13  默认值表达式 199
7.5.14  匿名方法表达式 200
7.6  一元操作符 200
7.6.1  一元加号操作符 200
7.6.2  一元减号操作符 200
7.6.3  逻辑否操作符 201
7.6.4  按位求补操作符 201
7.6.5  前缀递增和递减操作符 202
7.6.6  转换表达式 203
7.7  算术操作符 204
7.7.1  乘法操作符 204
7.7.2  除法操作符 205
7.7.3  求余操作符 206
7.7.4  加法操作符 207
7.7.5  减法操作符 209
7.8  移位操作符 211
7.9  关系和类型测试操作符 212
7.9.1  整数比较操作符 212
7.9.2  浮点数比较操作符 213
7.9.3  小数比较操作符 214
7.9.4  布尔值相等操作符 214
7.9.5  枚举比较操作符 215
7.9.6  引用类型相等操作符 215
7.9.7  字符串相等操作符 217
7.9.8  委托相等操作符 217
7.9.9  相等操作符和null 218
7.9.10  is操作符 218
7.9.11  as操作符 218
7.10  逻辑操作符 220
7.10.1  整数逻辑操作符 220
7.10.2  枚举逻辑操作符 220
7.10.3  布尔值逻辑操作符 221
7.10.4  可空值布尔逻辑操作符 221
7.11  条件逻辑操作符 221
7.11.1  布尔条件逻辑操作符 222
7.11.2  自定义条件逻辑操作符 222
7.12  Null拼接操作符 223
7.13  条件操作符 224
7.14  匿名函数表达式 225
7.14.1  匿名函数签名 227
7.14.2  匿名函数主体 227
7.14.3  重载决策 228
7.14.4  外部变量 229
7.14.5  匿名函数表达式的计算 232
7.15  查询表达式 232
7.15.1  查询表达式里的歧义 234
7.15.2  查询表达式翻译 234
7.15.3  查询表达式模式 242
7.16  赋值操作符 244
7.16.1  简单赋值 244
7.16.2  组合赋值 247
7.16.3  事件赋值 248
7.17  表达式 248
7.18  常量表达式 248
7.19  布尔表达式 249
第8章  语句 251
8.1  终点和可及性 251
8.2  块 253
8.2.1  语句列表 253
8.3  空语句 254
8.4  标签语句 254
8.5  声明语句 255
8.5.1  局部变量声明 255
8.5.2  局部常量声明 257
8.6  表达式语句 258
8.7  选择语句 258
8.7.1  if语句 258
8.7.2  switch语句 259
8.8  迭代语句 263
8.8.1  while语句 263
8.8.2  do语句 264
8.8.3  for语句 264
8.8.4  foreach语句 266
8.9  跳转语句 269
8.9.1  break语句 270
8.9.2  continue语句 270
8.9.3  goto语句 271
8.9.4  return语句 272
8.9.5  throw语句 273
8.10  try语句 274
8.11  checked和unchecked语句 277
8.12  lock语句 277
8.13  using语句 279
8.14  yield语句 281
第9章  命名空间 284
9.1  编译单元 284
9.2  命名空间声明 284
9.3  Extern别名 286
9.4  using指令 286
9.4.1  using别名指令 287
9.4.2  using命名空间指令 290
9.5  命名空间成员 292
9.6  类型声明 292
9.7  命名空间别名限定符 293
9.7.1  别名的唯一性 294
第10章  类 295
10.1  类声明 295
10.1.1  类修饰符 295
10.1.2  partial修饰符 297
10.1.3  类型形参 297
10.1.4  类基础规范 298
10.1.5  类型形参限制 300
10.1.6  类主体 305
10.2  局部类型 305
10.2.1  特性 306
10.2.2  修饰符 306
10.2.3  类型形参和限制 306
10.2.4  基类 307
10.2.5  基础接口 307
10.2.6  成员 308
10.2.7  局部方法 308
10.2.8  名字绑定 311
10.3  类成员 312
10.3.1  实例类型 313
10.3.2  构造类型的成员 313
10.3.3  继承 315
10.3.4  new修饰符 315
10.3.5  访问修饰符 316
10.3.6  组成类型 316
10.3.7  静态成员和实例成员 316
10.3.8  嵌套类型 317
10.3.9  保留成员名 321
10.4  常量 323
10.5  字段 325
10.5.1  静态字段和实例字段 326
10.5.2  只读字段 327
10.5.3  易失字段 329
10.5.4  字段初始化 330
10.5.5  字段初始化语句 330
10.6  方法 333
10.6.1  方法形参 335
10.6.2  静态和实例方法 341
10.6.3  虚拟方法 341
10.6.4  覆写方法 343
10.6.5  密封方法 346
10.6.6  抽象方法 347
10.6.7  外部方法 348
10.6.8  局部方法 349
10.6.9  扩展方法 349
10.6.10  方法主体 350
10.6.11  方法重载 351
10.7  属性 351
10.7.1  静态属性和实例属性 352
10.7.2  访问器 352
10.7.3  自动实现的属性 358
10.7.4  可访问性 358
10.7.5  虚拟、密封、覆写和抽象访问器 360
10.8  事件 362
10.8.1  类似字段的事件 364
10.8.2  事件访问器 365
10.8.3  静态事件和实例事件 367
10.8.4  虚拟、密封、覆写和抽象访问器 367
10.9  索引 367
10.9.1  索引重载 371
10.10  操作符 371
10.10.1  一元操作符 372
10.10.2  二元操作符 373
10.10.3  转换操作符 374
10.11  实例构造函数 376
10.11.1  构造函数初始化语句 377
10.11.2  实例字段初始化语句 379
10.11.3  构造函数的执行 379
10.11.4  默认构造函数 381
10.11.5  私有构造函数 381
10.11.6  可选的实例构造函数参数 382
10.12  静态构造函数 383
10.13  析构函数 385
10.14  迭代器 387
10.14.1  计数接口 388
10.14.2  枚举接口 388
10.14.3  Yield类型 388
10.14.4  计数对象 388
10.14.5  枚举对象 390
10.14.6  实现举例 391
第11章  结构 399
11.1  结构声明 399
11.1.1  结构修饰符 399
11.1.2  partial修饰符 400
11.1.3  结构接口 400
11.1.4  结构主体 400
11.2  结构成员 400
11.3  类和结构的区别 401
11.3.1  值语义 401
11.3.2  继承 402
11.3.3  赋值 402
11.3.4  默认值 402
11.3.5  装箱和拆箱 403
11.3.6  this的含义 405
11.3.7  字段初始化语句 405
11.3.8  构造函数 406
11.3.9  析构函数 407
11.3.10  静态构造函数 407
11.4  结构举例 407
11.4.1  数据库整数类型 407
11.4.2  数据库布尔类型 409
第12章  数组 412
12.1  数组类型 412
12.1.1  System.Array类型 413
12.1.2  数组和泛型IList接口 413
12.2  数组创建 414
12.3  数组元素访问 414
12.4  数组成员 414
12.5  数组协变 414
12.6  数组初始化语句 415
第13章  接口 417
13.1  接口声明 417
13.1.1  接口修饰符 417
13.1.2  partial修饰符 418
13.1.3  基础接口 418
13.1.4  接口主体 419
13.2  接口成员 419
13.2.1  接口方法 420
13.2.2  接口属性 420
13.2.3  接口事件 421
13.2.4  接口索引 421
13.2.5  接口成员访问 421
13.3  完全限定接口成员名 423
13.4  接口实现 424
13.4.1  显式接口成员实现 425
13.4.2  实现接口的唯一性 427
13.4.3  泛型方法的实现 428
13.4.4  接口映射 429
13.4.5  接口实现继承 432
13.4.6  重新实现接口 433
13.4.7  抽象类和接口 435
第14章  枚举 437
14.1  枚举声明 437
14.2  枚举修饰符 438
14.3  枚举成员 438
14.4  System.Enum类型 440
14.5  枚举值和操作 440
第15章  委托 442
15.1  委托声明 442
15.2  委托兼容性 444
15.3  委托实例化 445
15.4  委托调用 445
第16章  异常 448
16.1  异常产生的原因 448
16.2  System.Exception类 448
16.3  异常是如何处理的 449
16.4  常见的异常类 449
第17章  特性 450
17.1  特性类 450
17.1.1  特性的用法 450
17.1.2  位置和已命名参数 452
17.1.3  特性形参类型 453
17.2  特性规范 453
17.3  特性实例 458
17.3.1  特性的编译 459
17.3.2  在运行时获取一个特性实例 459
17.4  保留特性 459
17.4.1  AttributeUsage特性 459
17.4.2  Conditional特性 460
17.4.3  Obsolete特性 464
17.5  用于互操作的特性 465
17.5.1  和COM以及Win32组件互操作 465
17.5.2  和其他.NET语言互操作 465
第18章  不安全的代码 466
18.1  不安全的上下文 466
18.2  指针类型 469
18.3  固定变量和可移动变量 471
18.4  指针转换 472
18.4.1  指针数组 473
18.5  表达式里的指针 474
18.5.1  指针间接寻址 474
18.5.2  指针成员访问 475
18.5.3  指针元素访问 476
18.5.4  取地址操作符 476
18.5.5  指针递增和递减 477
18.5.6  指针算术 477
18.5.7  指针比较 478
18.5.8  sizeof操作符 479
18.6  fixed语句 479
18.7  定长缓冲区 483
18.7.1  定长缓冲区声明 483
18.7.2  表达式里的定长缓冲区 485
18.7.3  明确赋值检查 486
18.8  栈分配 486
18.9  动态内存分配 487
附录A  文档注释 490
附录B  文法 512
附录C  参考资料 549

教学资源推荐
参考读物推荐
作者: [美]乔治 T.海涅曼(George T. Heineman),加里?波利切(Gary Pollice),斯坦利?赛克欧(Stanley Selkow)著
作者: 韩梅 李凯 李广鹏 编著
作者: [德]比吉特·沃格尔-霍伊泽尔(Birgit Vogel-Heuser) 托马斯·保尔汉森(Thomas Bauernhansl) 迈克尔·腾·洪佩尔(Michael ten Hompel)编
作者: 目丁兔 编著