C#编程语言详解

C#编程语言详解
作 者: Anders Hejlsberg Scott Wiltamuth Peter Golde 张晓坤 谭立平 车树良
出版社: 电子工业出版社
丛编项: NET技术大系
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: C#
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  AndersHejlsberg,程序界的一个神话。他是C#语言的架构师和Microsoft公司卓越的工程师。在Borland公司就职的13年中,他担任Delphi和TurboPascal的首席架构师,之后于1996年加盟Microsoft公司。

内容简介

C#是一门简单、现代、优雅、面向对象、类型安全、平台独立的组件编程语言,是.NET的关键性语言,也是整个.NET平台的基础,它使程序员能快速地为新一代Microsoft.Net平台开发出应用程序。全书以通俗易懂的语言,精辟丰富的实例,从对C#的简介开始,全面讲解了C#编程语言规范以及各个层面的特性,内容包括C#的词法结构、类型、变量、表达式、类、结构、不安全代码、泛型,等等。本书内容翔实,实用性强,适合作为高等院校学生学习编程语言的教材,也是希望深入探索C#编程知识的广大程序开发人员绝佳的技术参考书。

图书目录

第一篇 C#1.0 1

第1章 C# 简介 3

1.1 Hello World 3

1.2 程序结构 4

1.3 类型和变量 6

1.4 表达式 8

1.5 语句 9

1.6 类和对象 12

1.6.1 成员 13

1.6.2 可访问性 14

1.6.3 基类 14

1.6.4 字段 15

1.6.5 方法 15

1.6.6 其他函数成员 21

1.7 结构 25

1.8 数组 27

1.9 接口 28

1.10 枚举 29

1.11 委托 31

1.12 特性 32

第2章 词法结构 34

2.1 程序 34

2.2 文法 34

2.2.1 文法表示法 34

2.2.2 词法文法 35

2.2.3 句法文法 35

2.3 词法分析 36

2.3.1 行结束符 36

2.3.2 空白 37

2.3.3注释 37

2.4 标记 38

2.4.1 Unicode字符转义序列 39

2.4.2 标识符 39

2.4.3 关键字 41

2.4.4 文本 42

2.4.5 运算符和标点 47

2.5 预处理指令 47

2.5.1 条件编译符号 48

2.5.2 预处理表达式 49

2.5.3 声明指令 50

2.5.4 条件编译指令 51

2.5.5 诊断指令 53

2.5.6 区域指令 54

2.5.7 行指令 55

第3章 基本概念 56

3.1 应用程序启动 56

3.2 应用程序终止 57

3.3 声明 57

3.4 成员 59

3.4.1 命名空间成员 59

3.4.2 结构成员 60

3.4.3 枚举成员 60

3.4.4 类成员 60

3.4.5 接口成员 60

3.4.6 数组成员 61

3.4.7 委托成员 61

3.5 成员访问 61

3.5.1 已声明可访问性 61

3.5.2 可访问域 62

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

3.5.4 可访问性约束 65

3.6 签名和重载 66

3.7 范围 66

3.8 命名空间和类型名称 70

3.9 自动内存管理 72

3.10 执行顺序 75

第4章 类型 76

4.1 值类型 76

4.1.1 System.ValueType 类型 77

4.1.2 默认构造函数 77

4.1.3 结构类型 78

4.1.4 简单类型 78

4.1.5 整型 79

4.1.6 浮点型 80

4.1.7 decimal 类型 81

4.1.8 bool 类型 82

4.1.9 枚举类型 82

4.2 引用类型 82

4.2.1 类类型 83

4.2.2 对象类型 84

4.2.3 string 类型 84

4.2.4 接口类型 84

4.2.5 数组类型 84

4.2.6 委托类型 84

4.3 装箱和取消装箱 85

4.3.1 装箱转换 85

4.3.2 取消装箱转换 86

第5章 变量 87

5.1 变量类别 87

5.1.1 静态变量 87

5.1.2 实例变量 88

5.1.3 数组元素 88

5.1.4 值参数 88

5.1.5 引用参数 88

5.1.6 输出参数 89

5.1.7 局部变量 89

5.2 默认值 90

5.3 明确赋值 90

5.3.1 初始已赋值变量 91

5.3.2 初始未赋值变量 91

5.3.3 确定明确赋值的细则 91

5.4 变量引用 101

5.5 变量引用的原子性 101

第6章 转换 102

6.1 隐式转换 102

6.1.1 标识转换 102

6.1.2 隐式数值转换 102

6.1.3 隐式枚举转换 103

6.1.4 隐式引用转换 103

6.1.5 装箱转换 104

6.1.6 隐式常数表达式转换 104

6.1.7 用户定义的隐式转换 104

6.2 显式转换 104

6.2.1 显式数值转换 105

6.2.2 显式枚举转换 106

6.2.3 显式引用转换 106

6.2.4 取消装箱转换 107

6.2.5 用户定义的显式转换 107

6.3 标准转换 107

6.3.1 标准隐式转换 107

6.3.2 标准显式转换 108

6.4 用户定义的转换 108

6.4.1 允许的用户定义转换 108

6.4.2 用户定义的转换的计算 108

6.4.3 用户定义的隐式转换 109

6.4.4 用户定义的显式转换 110

第7章 表达式 112

7.1 表达式的分类 112

7.2 运算符 113

7.2.1 运算符的优先级和顺序关联性 113

7.2.2 运算符重载 114

7.2.3 一元运算符重载决策 115

7.2.4 二元运算符重载决策 116

7.2.5 候选用户定义运算符 116

7.2.6 数值提升 116

7.3 成员查找 118

7.4 函数成员 119

7.4.1 参数列表 120

7.4.2 重载决策 123

7.4.3 函数成员调用 125

7.5 基本表达式 126

7.5.1 文本 127

7.5.2 简单名称 127

7.5.3 带括号的表达式 128

7.5.4 成员访问 129

7.5.5 调用表达式 131

7.5.6 元素访问 132

7.5.7 This 访问 134

7.5.8 Base 访问 134

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

7.5.10 new 运算符 136

7.5.11 typeof 运算符 140

7.5.12 checked 和 unchecked 运算符 141

7.6 一元运算符 143

7.6.1 一元加运算符 143

7.6.2 一元减运算符 144

7.6.3 逻辑否定运算符 144

7.6.4 按位求补运算符 145

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

7.6.6 强制转换表达式 146

7.7 算术运算符 146

7.7.1 乘法运算符 147

7.7.2 除法运算符 148

7.7.3 余数运算符 149

7.7.4 加法运算符 150

7.7.5 减法运算符 152

7.8 移位运算符 153

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

7.9.1 整数比较运算符 155

7.9.2 浮点比较运算符 156

7.9.3 小数比较运算符 157

7.9.4 布尔相等运算符 157

7.9.5 枚举比较运算符 157

7.9.6 引用类型相等运算符 158

7.9.7 字符串相等运算符 159

7.9.8 委托相等运算符 159

7.9.9 is 运算符 160

7.9.10 as 运算符 160

7.10 逻辑运算符 161

7.10.1 整数逻辑运算符 161

7.10.2 枚举逻辑运算符 162

7.10.3 布尔逻辑运算符 162

7.11 条件逻辑运算符 162

7.11.1 布尔条件逻辑运算符 163

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

7.12 条件运算符 164

7.13 赋值运算符 165

7.13.1 简单赋值 165

7.13.2 复合赋值 167

7.13.3 事件赋值 168

7.14 表达式 168

7.15 常数表达式 168

7.16 布尔表达式 169

第8章 语句 170

8.1 结束点和可到达性 170

8.2 块 172

8.3 空语句 173

8.4 标记语句 173

8.5 声明语句 174

8.5.1 局部变量声明 174

8.5.2 局部常数声明 175

8.6 表达式语句 175

8.7 选择语句 176

8.7.1 if 语句 176

8.7.2 switch 语句 177

8.8 迭代语句 181

8.8.1 while 语句 181

8.8.2 do 语句 181

8.8.3 for 语句 182

8.8.4 foreach 语句 183

8.9 跳转语句 185

8.9.1 break 语句 186

8.9.2 continue 语句 187

8.9.3 goto 语句 187

8.9.4 return 语句 188

8.9.5 throw 语句 189

8.10 try 语句 190

8.11 checked 语句和 unchecked 语句 193

8.12 lock 语句 193

8.13 using 语句 194

第9章 命名空间 197

9.1 编译单元 197

9.2 命名空间声明 197

9.3 using 指令 199

9.3.1 using 别名指令 199

9.3.2 using 命名空间指令 201

9.4 命名空间成员 203

9.5 类型声明 204

第10章 类 205

10.1 类声明 205

10.1.1 类修饰符 205

10.1.2 类基规范 207

10.1.3 类体 208

10.2 类成员 208

10.2.1 继承 209

10.2.2 new 修饰符 210

10.2.3 访问修饰符 210

10.2.4 构成类型 210

10.2.5 静态成员和实例成员 211

10.2.6 嵌套类型 212

10.2.7 保留成员名称 215

10.3 常数 217

10.4 字段 218

10.4.1 静态字段和实例字段 220

10.4.2 只读字段 220

10.4.3 易失字段 221

10.4.4 字段初始化 223

10.4.5 变量初始值设定项 223

10.5 方法 226

10.5.1 方法参数 227

10.5.2 静态方法和实例方法 233

10.5.3 虚拟方法 233

10.5.4 重写方法 235

10.5.5 密封方法 237

10.5.6 抽象方法 237

10.5.7 外部方法 239

10.5.8 方法体 239

10.5.9 方法重载 240

10.6 属性 240

10.6.1 静态属性和实例属性 241

10.6.2 访问器 241

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

10.7 事件 247

10.7.1 类似字段的事件 249

10.7.2 事件访问器 250

10.7.3 静态事件和实例事件 252

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

10.8 索引器 252

10.9 运算符 256

10.9.1 一元运算符 257

10.9.2 二元运算符 258

10.9.3 转换运算符 259

10.10 实例构造函数 260

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

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

10.10.3 构造函数执行 262

10.10.4 默认构造函数 264

10.10.5 私有构造函数 264

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

10.11 静态构造函数 265

10.12 析构函数 267

第11章 结构 270

11.1 结构声明 270

11.1.1 结构修饰符 270

11.1.2 结构接口 271

11.1.3 结构体 271

11.2 结构成员 271

11.3 类和结构的区别 272

11.3.1 值语义 272

11.3.2 继承 273

11.3.3 赋值 273

11.3.4 默认值 273

11.3.5 装箱和取消装箱 274

11.3.6 this 的意义 274

11.3.7 字段初始值设定项 274

11.3.8 构造函数 275

11.3.9 析构函数 276

11.4 结构示例 276

11.4.1 数据库整数类型 276

11.4.2 数据库布尔类型 277

第12章 数组 280

12.1 数组类型 280

12.2 数组创建 281

12.3 数组元素访问 281

12.4 数组成员 281

12.5 数组协方差 281

12.6 数组初始值设定项 282

第13章 接口 284

13.1 接口声明 284

13.1.1 接口修饰符 284

13.1.2 基接口 285

13.1.3 接口体 285

13.2 接口成员 285

13.2.1 接口方法 286

13.2.2 接口属性 287

13.2.3 接口事件 287

13.2.4 接口索引器 287

13.2.5 接口成员访问 288

13.3 完全限定接口成员名 289

13.4 接口实现 290

13.4.1 显式接口成员实现 291

13.4.2 接口映射 293

13.4.3 接口实现继承 295

13.4.4 接口重新实现 297

13.4.5 抽象类和接口 298

第14章 枚举 299

14.1 枚举声明 299

14.2 枚举修饰符 300

14.3 枚举成员 300

14.4 System.Enum 类型 302

14.5 枚举值和运算 302

第15章 委托 303

15.1 委托声明 303

15.2 委托实例化 305

15.3 委托调用 306

第16章 异常 308

16.1 导致异常的原因 308

16.2 System.Exception 类 308

16.3 异常的处理方式 309

16.4 公共异常类 309

第17章 特性 311

17.1 特性类 311

17.1.1 特性用法 311

17.1.2 定位和命名参数 312

17.1.3 特性参数类型 313

17.2 特性专用化 314

17.3 特性实例 318

17.3.1 特性的编译 319

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

17.4 保留特性 319

17.4.1 AttributeUsage 特性 320

17.4.2 Conditional 特性 320

17.4.3 Obsolete 特性 323

17.5 互操作的特性 324

17.5.1 与 COM 和 Win32 组件的互操作 324

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

第18章 不安全代码 325

18.1 不安全上下文 325

18.2 指针类型 328

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

18.4 指针转换 331

18.5 表达式中的指针 332

18.5.1 指针间接寻址 332

18.5.2 指针成员访问 333

18.5.3 指针元素访问 334

18.5.4 address-of 运算符 335

18.5.5 指针增加和指针减小 335

18.5.6 指针算法 336

18.5.7 指针比较 337

18.5.8 sizeof 运算符 337

18.6 固定语句 338

18.7 堆栈分配 341

18.8 动态内存分配 342

第二篇 C#2.0 243

第19章 C# 2.0介绍 347

19.1 泛型 347

19.1.1 为什么使用泛型 347

19.1.2 创建和使用泛型 348

19.1.3 泛型类型实例化 349

19.1.4约束 350

19.1.5泛型方法 351

19.2 匿名方法 352

19.3 迭代器 354

19.4 不完整类型 358

第20章 泛型 360

20.1 泛型类声明 360

20.1.1 类型参数 360

20.1.2 实例类型 362

20.1.3 基类规范 362

20.1.4 泛型类的成员 363

20.1.5 泛型类中的静态字段 363

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

20.1.7 访问受保护的成员 364

20.1.8 在泛型类中重载 365

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

20.1.10 重写和泛型类 366

20.1.11 泛型类中的运算符 367

20.1.12 泛型类中的嵌套类型 368

20.1.13 应用程序入口点 369

20.2 泛型结构声明 369

20.3 泛型接口声明 369

20.3.1 实现接口的惟一性 370

20.3.2 显式接口成员实现 370

20.4 泛型委托声明 371

20.5 构造类型 371

20.5.1 类型实参 373

20.5.2 开放类型和封闭类型 373

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

20.5.4 构造类型的成员 374

20.5.5 构造类型的可访问性 375

20.5.6 转换 375

20.5.7 System.Nullable类型 376

20.5.8 使用别名指令 376

20.5.9 特性 376

20.6 泛型方法 377

20.6.1 泛型方法签名 378

20.6.2 虚拟泛型方法 379

20.6.3 调用泛型方法 379

20.6.4 类型实参推断 379

20.6.5 语法歧义 381

20.6.6 对委托使用泛型方法 381

20.6.7 非泛型属性、事件、索引器或运算符 382

20.7 约束 382

20.7.1 满足约束 384

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

20.7.3 类型参数和装箱 385

20.7.4 包含类型参数的转换 387

20.8 表达式和语句 388

20.8.1 默认值表达式 388

20.8.2 对象创建表达式 389

20.8.3 type of 运算符 389

20.8.4 引用相等运算符 390

20.8.5 is运算符 390

20.8.6 as运算符 390

20.8.7 异常语句 391

20.8.8 lock语句 391

20.8.9 using 语句 391

20.8.10 foreach语句 391

20.9 查找规则修订 392

20.9.1 命名空间和类型名称 392

20.9.2 成员查找 393

20.9.3 简单名称 395

20.9.4 成员访问 396

20.9.5 方法调用 397

20.9.6委托创建表达式 399

20.10 右移语法改变 399

第21章 匿名方法 401

21.1 匿名方法表达式 401

21.2 匿名方法签名 401

21.3 匿名方法转换 402

21.4 匿名方法块 403

21.5 外部变量 404

21.5.1 捕获外部变量 404

21.5.2 局部变量实例化 405

21.6 匿名方法求值 407

21.7 委托实例相等性 407

21.8 明确赋值 408

21.9 方法组转换 408

21.10 实现示例 409

第22章 迭代器 412

22.1 迭代器块 412

22.1.1 枚举器接口 412

22.1.2 可枚举接口 412

22.1.3 yield 类型 412

22.1.4 this 访问 413

22.2 枚举对象 413

22.2.1 MoveNext方法 414

22.2.2 Current属性 415

22.2.3 Dispose方法 415

22.3 可枚举对象 415

22.4 yield 语句 416

22.5 实现示例 418

第23章 不完整类型 422

23.1 不完整类型声明 422

23.1 特性 423

23.1.2 修饰符 423

23.1.3 类型参数和约束 423

23.1.4 基类 424

23.1.5 基接口 424

23.1.6 成员 425

23.2 名称绑定 425

附录A 文档注释 427

附录B 语法 445