C# 语言规范_版本5.0 (第0章 目录)

 

 

C#

语言规范

版本5.0


注意

© 1999-2012 Microsoft Corporation。保留所有权利。

Microsoft、Windows、Visual Basic、Visual C# 和 Visual C++ 是 Microsoft Corporation 在美国和/或其他国家/地区的注册商标或商标。

本文提及的其他产品和公司名称可能是其各自所有者的商标。

 

目录

1. 介绍...................................................................................................................................................... 1

1.1 Hello world....................................................................................................................................... 1

1.2 程序结构.......................................................................................................................................... 2

1.3 类型和变量...................................................................................................................................... 3

1.4 表达式.............................................................................................................................................. 6

1.5 语句................................................................................................................................................. 8

1.6 类和对象........................................................................................................................................ 12

1.6.1 成员......................................................................................................................................... 12

1.6.2 可访问性................................................................................................................................. 13

1.6.3 类型形参................................................................................................................................. 13

1.6.4 基类......................................................................................................................................... 14

1.6.5 字段......................................................................................................................................... 14

1.6.6 方法......................................................................................................................................... 15

1.6.6.1 参数................................................................................................................................... 15

1.6.6.2 方法体和局部变量............................................................................................................ 16

1.6.6.3 静态方法和实例方法........................................................................................................ 17

1.6.6.4 虚方法、重写方法和抽象方法......................................................................................... 18

1.6.6.5 方法重载........................................................................................................................... 20

1.6.7 其他函数成员.......................................................................................................................... 20

1.6.7.1 构造函数........................................................................................................................... 22

1.6.7.2 属性................................................................................................................................... 23

1.6.7.3 索引器............................................................................................................................... 23

1.6.7.4 事件................................................................................................................................... 24

1.6.7.5 运算符............................................................................................................................... 24

1.6.7.6 析构函数........................................................................................................................... 25

1.7 结构............................................................................................................................................... 25

1.8 数组............................................................................................................................................... 26

1.9 接口............................................................................................................................................... 27

1.10 枚举............................................................................................................................................. 28

1.11 委托............................................................................................................................................. 29

1.12 特性............................................................................................................................................. 30

2. 词法结构............................................................................................................................................ 33

2.1 程序............................................................................................................................................... 33

2.2 文法............................................................................................................................................... 33

2.2.1 文法表示法.............................................................................................................................. 33

2.2.2 词法文法................................................................................................................................. 34

2.2.3 句法文法................................................................................................................................. 34

2.3 语法分析........................................................................................................................................ 34

2.3.1 行结束符................................................................................................................................. 35

2.3.2 注释......................................................................................................................................... 35

2.3.3 空白......................................................................................................................................... 36

2.4 标记............................................................................................................................................... 37

2.4.1 Unicode 字符转义序列............................................................................................................ 37

2.4.2 标识符..................................................................................................................................... 38

2.4.3 关键字..................................................................................................................................... 39

2.4.4 文本......................................................................................................................................... 40

2.4.4.1 布尔值............................................................................................................................... 40

2.4.4.2 整数................................................................................................................................... 40

2.4.4.3 实数................................................................................................................................... 41

2.4.4.4 字符................................................................................................................................... 42

2.4.4.5 字符串............................................................................................................................... 43

2.4.4.6 null 文本............................................................................................................................ 45

2.4.5 运算符和标点符号.................................................................................................................. 45

2.5 预处理指令.................................................................................................................................... 45

2.5.1 条件编译符号.......................................................................................................................... 46

2.5.2 预处理表达式.......................................................................................................................... 47

2.5.3 声明指令................................................................................................................................. 47

2.5.4 条件编译指令.......................................................................................................................... 48

2.5.5 诊断指令................................................................................................................................. 51

2.5.6 区域指令................................................................................................................................. 51

2.5.7 行指令..................................................................................................................................... 52

2.5.8 Pragma 指令............................................................................................................................ 52

2.5.8.1 Pragma warning.................................................................................................................. 52

3. 基本概念............................................................................................................................................ 55

3.1 应用程序启动................................................................................................................................ 55

3.2 应用程序终止................................................................................................................................ 56

3.3 声明............................................................................................................................................... 56

3.4 成员............................................................................................................................................... 58

3.4.1 命名空间成员.......................................................................................................................... 58

3.4.2 结构成员................................................................................................................................. 58

3.4.3 枚举成员................................................................................................................................. 59

3.4.4 类成员..................................................................................................................................... 59

3.4.5 接口成员................................................................................................................................. 59

3.4.6 数组成员................................................................................................................................. 59

3.4.7 委托成员................................................................................................................................. 59

3.5 成员访问........................................................................................................................................ 60

3.5.1 已声明可访问性...................................................................................................................... 60

3.5.2 可访问域................................................................................................................................. 60

3.5.3 实例成员的受保护访问........................................................................................................... 63

3.5.4 可访问性约束.......................................................................................................................... 64

3.6 签名和重载.................................................................................................................................... 65

3.7 范围............................................................................................................................................... 66

3.7.1 名称隐藏................................................................................................................................. 68

3.7.1.1 通过嵌套隐藏.................................................................................................................... 68

3.7.1.2 通过继承隐藏.................................................................................................................... 69

3.8 命名空间和类型名称..................................................................................................................... 70

3.8.1 完全限定名.............................................................................................................................. 72

3.9 自动内存管理................................................................................................................................ 73

3.10 执行顺序...................................................................................................................................... 75

4. 类型.................................................................................................................................................... 77

4.1 值类型............................................................................................................................................ 77

4.1.1 System.ValueType 类型.......................................................................................................... 78

4.1.2 默认构造函数.......................................................................................................................... 78

4.1.3 结构类型................................................................................................................................. 79

4.1.4 简单类型................................................................................................................................. 79

4.1.5 整型......................................................................................................................................... 80

4.1.6 浮点型..................................................................................................................................... 81

4.1.7 decimal 类型............................................................................................................................ 82

4.1.8 bool 类型................................................................................................................................. 82

4.1.9 枚举类型................................................................................................................................. 82

4.1.10 可以为 null 的类型............................................................................................................... 83

4.2 引用类型........................................................................................................................................ 83

4.2.1 类类型..................................................................................................................................... 84

4.2.2 对象类型................................................................................................................................. 84

4.2.3 dynamic 类型.......................................................................................................................... 84

4.2.4 string 类型............................................................................................................................... 85

4.2.5 接口类型................................................................................................................................. 85

4.2.6 数组类型................................................................................................................................. 85

4.2.7 委托类型................................................................................................................................. 85

4.3 装箱和拆箱.................................................................................................................................... 85

4.3.1 装箱转换................................................................................................................................. 85

4.3.2 拆箱转换................................................................................................................................. 86

4.4 构造类型........................................................................................................................................ 87

4.4.1 类型实参................................................................................................................................. 88

4.4.2 开放和封闭类型...................................................................................................................... 88

4.4.3 绑定和未绑定类型.................................................................................................................. 89

4.4.4 满足约束................................................................................................................................. 89

4.5 类型形参........................................................................................................................................ 90

4.6 表达式树类型................................................................................................................................ 90

4.7 dynamic 类型................................................................................................................................. 91

5. 变量.................................................................................................................................................... 92

5.1 变量类别........................................................................................................................................ 92

5.1.1 静态变量................................................................................................................................. 92

5.1.2 实例变量................................................................................................................................. 92

5.1.2.1 类中的实例变量................................................................................................................ 92

5.1.2.2 结构中的实例变量............................................................................................................ 93

5.1.3 数组元素................................................................................................................................. 93

5.1.4 值参数..................................................................................................................................... 93

5.1.5 引用参数................................................................................................................................. 93

5.1.6 输出形参................................................................................................................................. 93

5.1.7 局部变量................................................................................................................................. 94

5.2 默认值............................................................................................................................................ 94

5.3 明确赋值........................................................................................................................................ 95

5.3.1 初始已赋值变量...................................................................................................................... 95

5.3.2 初始未赋值变量...................................................................................................................... 96

5.3.3 确定明确赋值的细则............................................................................................................... 96

5.3.3.1 一般语句规则.................................................................................................................... 96

5.3.3.2 块语句、checked 和 unchecked 语句............................................................................. 97

5.3.3.3 表达式语句....................................................................................................................... 97

5.3.3.4 声明语句........................................................................................................................... 97

5.3.3.5 if 语句............................................................................................................................... 97

5.3.3.6 switch 语句........................................................................................................................ 97

5.3.3.7 while 语句......................................................................................................................... 98

5.3.3.8 do 语句.............................................................................................................................. 98

5.3.3.9 for 语句............................................................................................................................. 98

5.3.3.10 break、continue 和 goto 语句........................................................................................ 98

5.3.3.11 throw 语句....................................................................................................................... 99

5.3.3.12 return 语句...................................................................................................................... 99

5.3.3.13 try-catch 语句.................................................................................................................. 99

5.3.3.14 try-finally 语句................................................................................................................ 99

5.3.3.15 try-catch-finally 语句.................................................................................................... 100

5.3.3.16 foreach 语句.................................................................................................................. 100

5.3.3.17 using 语句..................................................................................................................... 101

5.3.3.18 lock 语句....................................................................................................................... 101

5.3.3.19 yield 语句...................................................................................................................... 101

5.3.3.20 简单表达式的一般规则................................................................................................. 101

5.3.3.21 带有嵌入表达式的表达式的一般规则.......................................................................... 101

5.3.3.22 调用表达式和对象创建表达式..................................................................................... 102

5.3.3.23 简单赋值表达式............................................................................................................ 102

5.3.3.24 && 表达式.................................................................................................................... 102

5.3.3.25 || 表达式........................................................................................................................ 103

5.3.3.26 !表达式.......................................................................................................................... 104

5.3.3.27 ?? 表达式...................................................................................................................... 104

5.3.3.28 ?: 表达式....................................................................................................................... 105

5.3.3.29 匿名函数....................................................................................................................... 105

5.4 变量引用...................................................................................................................................... 106

5.5 变量引用的原子性....................................................................................................................... 106

6. 转换.................................................................................................................................................. 107

6.1 隐式转换...................................................................................................................................... 107

6.1.1 标识转换............................................................................................................................... 108

6.1.2 隐式数值转换........................................................................................................................ 108

6.1.3 隐式枚举转换........................................................................................................................ 108

6.1.4 可以为 null 的隐式转换....................................................................................................... 108

6.1.5 null 文本转换........................................................................................................................ 109

6.1.6 隐式引用转换........................................................................................................................ 109

6.1.7 装箱转换............................................................................................................................... 110

6.1.8 隐式动态转换........................................................................................................................ 110

6.1.9 隐式常量表达式转换............................................................................................................. 110

6.1.10 涉及类型形参的隐式转换................................................................................................... 110

6.1.11 用户定义的隐式转换........................................................................................................... 111

6.1.12 匿名函数转换和方法组转换............................................................................................... 111

6.2 显式转换...................................................................................................................................... 111

6.2.1 显式数值转换........................................................................................................................ 112

6.2.2 显式枚举转换........................................................................................................................ 113

6.2.3 可以为 null 的显式转换....................................................................................................... 113

6.2.4 显式引用转换........................................................................................................................ 114

6.2.5 拆箱转换............................................................................................................................... 115

6.2.6 显式动态转换........................................................................................................................ 115

6.2.7 涉及类型参数的显式转换..................................................................................................... 116

6.2.8 用户定义的显式转换............................................................................................................. 117

6.3 标准转换...................................................................................................................................... 117

6.3.1 标准隐式转换........................................................................................................................ 117

6.3.2 标准显式转换........................................................................................................................ 117

6.4 用户定义的转换........................................................................................................................... 117

6.4.1 允许的用户定义转换............................................................................................................. 117

6.4.2 提升转换运算符.................................................................................................................... 118

6.4.3 用户定义转换的计算............................................................................................................. 118

6.4.4 用户定义的隐式转换............................................................................................................. 119

6.4.5 用户定义的显式转换............................................................................................................. 120

6.5 匿名函数转换.............................................................................................................................. 121

6.5.1 匿名函数转换为委托类型的计算.......................................................................................... 122

6.5.2 匿名函数转换为表达式树类型的计算.................................................................................. 123

6.5.3 实现示例............................................................................................................................... 123

6.6 方法组转换.................................................................................................................................. 125

7. 表达式.............................................................................................................................................. 129

7.1 表达式的分类.............................................................................................................................. 129

7.1.1 表达式的值............................................................................................................................ 130

7.2 静态和动态绑定........................................................................................................................... 130

7.2.1 绑定时间............................................................................................................................... 131

7.2.2 动态绑定............................................................................................................................... 131

7.2.3 构成表达式的类型................................................................................................................ 131

7.3 运算符.......................................................................................................................................... 131

7.3.1 运算符的优先级和顺序关联性.............................................................................................. 132

7.3.2 运算符重载............................................................................................................................ 133

7.3.3 一元运算符重载决策............................................................................................................. 134

7.3.4 二元运算符重载决策............................................................................................................. 134

7.3.5 候选用户定义运算符............................................................................................................. 134

7.3.6 数值提升............................................................................................................................... 135

7.3.6.1 一元数值提升.................................................................................................................. 135

7.3.6.2 二元数值提升.................................................................................................................. 135

7.3.7 提升运算符............................................................................................................................ 136

7.4 成员查找...................................................................................................................................... 137

7.4.1 基类型................................................................................................................................... 138

7.5 函数成员...................................................................................................................................... 138

7.5.1 实参列表............................................................................................................................... 140

7.5.1.1 对应形参......................................................................................................................... 141

7.5.1.2 实参列表的运行时计算................................................................................................... 142

7.5.2 类型推断............................................................................................................................... 143

7.5.2.1 第一阶段......................................................................................................................... 144

7.5.2.2 第二阶段......................................................................................................................... 144

7.5.2.3 输入类型......................................................................................................................... 145

7.5.2.4 输出类型......................................................................................................................... 145

7.5.2.5 依赖................................................................................................................................. 145

7.5.2.6 输出类型推断.................................................................................................................. 145

7.5.2.7 参数类型显式推断.......................................................................................................... 145

7.5.2.8 精确推断......................................................................................................................... 145

7.5.2.9 下限推断......................................................................................................................... 145

7.5.2.10 上限推断....................................................................................................................... 146

7.5.2.11 固定............................................................................................................................... 147

7.5.2.12 推断返回类型................................................................................................................ 147

7.5.2.13 方法组转换的类型推断................................................................................................. 148

7.5.2.14 查找一组表达式的最通用类型..................................................................................... 149

7.5.3 重载决策............................................................................................................................... 149

7.5.3.1 适用函数成员.................................................................................................................. 149

7.5.3.2 更好的函数成员.............................................................................................................. 150

7.5.3.3 表达式的更佳转换.......................................................................................................... 151

7.5.3.4 类型的更佳转换.............................................................................................................. 151

7.5.3.5 更佳转换目标.................................................................................................................. 151

7.5.3.6 泛型类中的重载.............................................................................................................. 152

7.5.4 动态重载决策的编译时检查................................................................................................. 152

7.5.5 函数成员调用........................................................................................................................ 153

7.5.5.1 已装箱实例上的调用...................................................................................................... 154

7.6 基本表达式.................................................................................................................................. 154

7.6.1 文本....................................................................................................................................... 155

7.6.2 简单名称............................................................................................................................... 155

7.6.2.1 块中的固定含义.............................................................................................................. 156

7.6.3 带括号的表达式.................................................................................................................... 157

7.6.4 成员访问............................................................................................................................... 157

7.6.4.1 相同的简单名称和类型名称........................................................................................... 159

7.6.4.2 语法多义性..................................................................................................................... 159

7.6.5 调用表达式............................................................................................................................ 160

7.6.5.1 方法调用......................................................................................................................... 161

7.6.5.2 扩展方法调用.................................................................................................................. 162

7.6.5.3 委托调用......................................................................................................................... 164

7.6.6 元素访问............................................................................................................................... 164

7.6.6.1 数组访问......................................................................................................................... 165

7.6.6.2 索引器访问..................................................................................................................... 165

7.6.7 this 访问................................................................................................................................ 166

7.6.8 基访问................................................................................................................................... 166

7.6.9 后缀增量和后缀减量运算符................................................................................................. 167

7.6.10 new 运算符.......................................................................................................................... 168

7.6.10.1 对象创建表达式............................................................................................................ 168

7.6.10.2 对象初始值设定项........................................................................................................ 169

7.6.10.3 集合初始值设定项........................................................................................................ 171

7.6.10.4 数组创建表达式............................................................................................................ 172

7.6.10.5 委托创建表达式............................................................................................................ 174

7.6.10.6 匿名对象创建表达式.................................................................................................... 175

7.6.11 typeof 运算符...................................................................................................................... 177

7.6.12 checked 和 unchecked 运算符........................................................................................... 179

7.6.13 默认值表达式...................................................................................................................... 181

7.6.14 匿名方法表达式.................................................................................................................. 181

7.7 一元运算符.................................................................................................................................. 181

7.7.1 一元加运算符........................................................................................................................ 181

7.7.2 一元减运算符........................................................................................................................ 182

7.7.3 逻辑否定运算符.................................................................................................................... 182

7.7.4 按位求补运算符.................................................................................................................... 182

7.7.5 前缀增量和减量运算符......................................................................................................... 183

7.7.6 强制转换表达式.................................................................................................................... 183

7.7.7 Await 表达式......................................................................................................................... 184

7.7.7.1 可等待的表达式.............................................................................................................. 185

7.7.7.2 await 表达式的分类........................................................................................................ 185

7.7.7.3 await 表达式的运行时计算............................................................................................. 185

7.8 算术运算符.................................................................................................................................. 186

7.8.1 乘法运算符............................................................................................................................ 186

7.8.2 除法运算符............................................................................................................................ 187

7.8.3 余数运算符............................................................................................................................ 188

7.8.4 加法运算符............................................................................................................................ 189

7.8.5 减法运算符............................................................................................................................ 191

7.9 移位运算符.................................................................................................................................. 192

7.10 关系和类型测试运算符............................................................................................................. 194

7.10.1 整数比较运算符.................................................................................................................. 194

7.10.2 浮点比较运算符.................................................................................................................. 195

7.10.3 小数比较运算符.................................................................................................................. 196

7.10.4 布尔相等运算符.................................................................................................................. 196

7.10.5 枚举比较运算符.................................................................................................................. 196

7.10.6 引用类型相等运算符........................................................................................................... 196

7.10.7 字符串相等运算符.............................................................................................................. 198

7.10.8 委托相等运算符.................................................................................................................. 198

7.10.9 相等运算符和 null.............................................................................................................. 199

7.10.10 is 运算符............................................................................................................................ 199

7.10.11 as 运算符........................................................................................................................... 199

7.11 逻辑运算符................................................................................................................................ 200

7.11.1 整数逻辑运算符.................................................................................................................. 201

7.11.2 枚举逻辑运算符.................................................................................................................. 201

7.11.3 布尔逻辑运算符.................................................................................................................. 201

7.11.4 可以为 null 的布尔逻辑运算符.......................................................................................... 202

7.12 条件逻辑运算符......................................................................................................................... 202

7.12.1 布尔条件逻辑运算符........................................................................................................... 203

7.12.2 用户定义的条件逻辑运算符............................................................................................... 203

7.13 空合并运算符............................................................................................................................ 203

7.14 条件运算符................................................................................................................................ 204

7.15 匿名函数表达式......................................................................................................................... 205

7.15.1 匿名函数签名...................................................................................................................... 207

7.15.2 匿名函数体.......................................................................................................................... 207

7.15.3 重载决策............................................................................................................................. 207

7.15.4 匿名函数与动态绑定........................................................................................................... 208

7.15.5 外层变量............................................................................................................................. 208

7.15.5.1 捕获的外层变量............................................................................................................ 208

7.15.5.2 局部变量实例化............................................................................................................ 209

7.15.6 匿名函数表达式计算........................................................................................................... 211

7.16 查询表达式................................................................................................................................ 211

7.16.1 查询表达式的多义性........................................................................................................... 213

7.16.2 查询表达式转换.................................................................................................................. 213

7.16.2.1 带继续符的 select 和 groupby 子句............................................................................ 213

7.16.2.2 显式范围变量类型........................................................................................................ 214

7.16.2.3 退化查询表达式............................................................................................................ 214

7.16.2.4 from、let、where、join 和 orderby 子句.................................................................... 215

7.16.2.5 select 子句..................................................................................................................... 218

7.16.2.6 Groupby 子句................................................................................................................ 219

7.16.2.7 透明标识符................................................................................................................... 219

7.16.3 查询表达式模式.................................................................................................................. 220

7.17 赋值运算符................................................................................................................................ 221

7.17.1 简单赋值............................................................................................................................. 222

7.17.2 复合赋值............................................................................................................................. 224

7.17.3 事件赋值............................................................................................................................. 225

7.18 表达式........................................................................................................................................ 225

7.19 常量表达式................................................................................................................................ 225

7.20 布尔表达式................................................................................................................................ 227

8. 语句.................................................................................................................................................. 229

8.1 结束点和可到达性....................................................................................................................... 229

8.2 块................................................................................................................................................. 231

8.2.1 语句列表............................................................................................................................... 231

8.3 空语句.......................................................................................................................................... 232

8.4 标记语句...................................................................................................................................... 232

8.5 声明语句...................................................................................................................................... 233

8.5.1 局部变量声明........................................................................................................................ 233

8.5.2 局部常量声明........................................................................................................................ 234

8.6 表达式语句.................................................................................................................................. 235

8.7 选择语句...................................................................................................................................... 235

8.7.1 if 语句................................................................................................................................... 235

8.7.2 switch 语句............................................................................................................................ 236

8.8 迭代语句...................................................................................................................................... 239

8.8.1 while 语句............................................................................................................................. 239

8.8.2 do 语句.................................................................................................................................. 240

8.8.3 for 语句................................................................................................................................. 240

8.8.4 foreach 语句.......................................................................................................................... 241

8.9 跳转语句...................................................................................................................................... 244

8.9.1 break 语句............................................................................................................................. 245

8.9.2 continue 语句........................................................................................................................ 246

8.9.3 goto 语句............................................................................................................................... 246

8.9.4 return 语句............................................................................................................................. 247

8.9.5 throw 语句............................................................................................................................. 248

8.10 try 语句...................................................................................................................................... 249

8.11 checked 语句和 unchecked 语句.............................................................................................. 252

8.12 lock 语句.................................................................................................................................... 252

8.13 using 语句.................................................................................................................................. 253

8.14 yield 语句................................................................................................................................... 255

9. 命名空间.......................................................................................................................................... 257

9.1 编译单元...................................................................................................................................... 257

9.2 命名空间声明.............................................................................................................................. 257

9.3 Extern 别名.................................................................................................................................. 258

9.4 using 指令.................................................................................................................................... 259

9.4.1 using 别名指令...................................................................................................................... 259

9.4.2 Using 命名空间指令.............................................................................................................. 262

9.5 命名空间成员.............................................................................................................................. 264

9.6 类型声明...................................................................................................................................... 264

9.7 命名空间别名限定符................................................................................................................... 265

9.7.1 别名的唯一性........................................................................................................................ 266

10. 类.................................................................................................................................................... 267

10.1 类声明........................................................................................................................................ 267

10.1.1 类修饰符............................................................................................................................. 267

10.1.1.1 抽象类........................................................................................................................... 268

10.1.1.2 密封类........................................................................................................................... 268

10.1.1.3 静态类........................................................................................................................... 268

10.1.2 分部修饰符.......................................................................................................................... 269

10.1.3 类型形参............................................................................................................................. 269

10.1.4 类基本规范.......................................................................................................................... 269

10.1.4.1 基类............................................................................................................................... 270

10.1.4.2 接口实现....................................................................................................................... 271

10.1.5 类型形参约束...................................................................................................................... 272

10.1.6 类体..................................................................................................................................... 276

10.2 分部类型.................................................................................................................................... 276

10.2.1 特性..................................................................................................................................... 276

10.2.2 修饰符................................................................................................................................. 277

10.2.3 类型形参和约束.................................................................................................................. 277

10.2.4 基类..................................................................................................................................... 277

10.2.5 基接口................................................................................................................................. 278

10.2.6 成员..................................................................................................................................... 278

10.2.7 分部方法............................................................................................................................. 278

10.2.8 名称绑定............................................................................................................................. 281

10.3 类成员........................................................................................................................................ 281

10.3.1 实例类型............................................................................................................................. 282

10.3.2 构造类型的成员.................................................................................................................. 283

10.3.3 继承..................................................................................................................................... 283

10.3.4 new 修饰符.......................................................................................................................... 284

10.3.5 访问修饰符.......................................................................................................................... 284

10.3.6 构成类型............................................................................................................................. 285

10.3.7 静态成员和实例成员........................................................................................................... 285

10.3.8 嵌套类型............................................................................................................................. 286

10.3.8.1 完全限定名................................................................................................................... 286

10.3.8.2 已声明可访问性............................................................................................................ 286

10.3.8.3 隐藏............................................................................................................................... 287

10.3.8.4 this 访问........................................................................................................................ 287

10.3.8.5 对包含类型的私有和受保护成员的访问...................................................................... 288

10.3.8.6 泛型类中的嵌套类型.................................................................................................... 289

10.3.9 保留成员名称...................................................................................................................... 289

10.3.9.1 为属性保留的成员名称................................................................................................. 290

10.3.9.2 为事件保留的成员名称................................................................................................. 291

10.3.9.3 为索引器保留的成员名称............................................................................................. 291

10.3.9.4 为析构函数保留的成员名称......................................................................................... 291

10.4 常量........................................................................................................................................... 291

10.5 字段........................................................................................................................................... 292

10.5.1 静态字段和实例字段........................................................................................................... 294

10.5.2 只读字段............................................................................................................................. 294

10.5.2.1 对常量使用静态只读字段............................................................................................. 295

10.5.2.2 常量和静态只读字段的版本控制.................................................................................. 295

10.5.3 可变字段............................................................................................................................. 296

10.5.4 字段初始化.......................................................................................................................... 297

10.5.5 变量初始值设定项.............................................................................................................. 297

10.5.5.1 静态字段初始化............................................................................................................ 298

10.5.5.2 实例字段初始化............................................................................................................ 299

10.6 方法........................................................................................................................................... 300

10.6.1 方法形参............................................................................................................................. 301

10.6.1.1 值参数........................................................................................................................... 303

10.6.1.2 引用参数....................................................................................................................... 303

10.6.1.3 输出形参....................................................................................................................... 304

10.6.1.4 形参数组....................................................................................................................... 305

10.6.2 静态方法和实例方法........................................................................................................... 307

10.6.3 虚方法................................................................................................................................. 308

10.6.4 重写方法............................................................................................................................. 309

10.6.5 密封方法............................................................................................................................. 311

10.6.6 抽象方法............................................................................................................................. 312

10.6.7 外部方法............................................................................................................................. 313

10.6.8 分部方法............................................................................................................................. 314

10.6.9 扩展方法............................................................................................................................. 314

10.6.10 方法体............................................................................................................................... 315

10.6.11 方法重载........................................................................................................................... 315

10.7 属性........................................................................................................................................... 315

10.7.1 静态属性和实例属性........................................................................................................... 316

10.7.2 访问器................................................................................................................................. 317

10.7.3 自动实现的属性.................................................................................................................. 321

10.7.4 可访问性............................................................................................................................. 322

10.7.5 虚、密封、重写和抽象访问器............................................................................................ 323

10.8 事件........................................................................................................................................... 325

10.8.1 类似字段的事件.................................................................................................................. 327

10.8.2 事件访问器.......................................................................................................................... 328

10.8.3 静态事件和实例事件........................................................................................................... 329

10.8.4 虚、密封、重写和抽象访问器............................................................................................ 329

10.9 索引器........................................................................................................................................ 330

10.9.1 索引器重载.......................................................................................................................... 333

10.10 运算符...................................................................................................................................... 333

10.10.1 一元运算符........................................................................................................................ 335

10.10.2 二元运算符........................................................................................................................ 335

10.10.3 转换运算符........................................................................................................................ 336

10.11 实例构造函数.......................................................................................................................... 338

10.11.1 构造函数初始值设定项..................................................................................................... 339

10.11.2 实例变量初始值设定项..................................................................................................... 340

10.11.3 构造函数执行.................................................................................................................... 340

10.11.4 默认构造函数.................................................................................................................... 342

10.11.5 私有构造函数.................................................................................................................... 342

10.11.6 可选的实例构造函数形参................................................................................................. 343

10.12 静态构造函数.......................................................................................................................... 343

10.13 析构函数.................................................................................................................................. 345

10.14 迭代器...................................................................................................................................... 347

10.14.1 枚举器接口........................................................................................................................ 347

10.14.2 可枚举接口........................................................................................................................ 347

10.14.3 产生类型........................................................................................................................... 347

10.14.4 枚举器对象........................................................................................................................ 347

10.14.4.1 MoveNext 方法........................................................................................................... 348

10.14.4.2 Current 属性................................................................................................................ 349

10.14.4.3 Dispose 方法............................................................................................................... 349

10.14.5 可枚举对象........................................................................................................................ 349

10.14.5.1 GetEnumerator 方法.................................................................................................... 350

10.14.6 实现示例........................................................................................................................... 350

10.15 异步函数.................................................................................................................................. 355

10.15.1 返回任务的异步函数计算................................................................................................. 356

10.15.2 返回 void 的异步函数计算............................................................................................... 356

11. 结构................................................................................................................................................ 357

11.1 结构声明.................................................................................................................................... 357

11.1.1 结构修饰符.......................................................................................................................... 357

11.1.2 分部修饰符.......................................................................................................................... 357

11.1.3 结构接口............................................................................................................................. 358

11.1.4 结构体................................................................................................................................. 358

11.2 结构成员.................................................................................................................................... 358

11.3 类和结构的区别......................................................................................................................... 358

11.3.1 值语义................................................................................................................................. 359

11.3.2 继承..................................................................................................................................... 359

11.3.3 赋值..................................................................................................................................... 360

11.3.4 默认值................................................................................................................................. 360

11.3.5 装箱和拆箱.......................................................................................................................... 360

11.3.6 this 的含义........................................................................................................................... 362

11.3.7 字段初始值设定项.............................................................................................................. 362

11.3.8 构造函数............................................................................................................................. 362

11.3.9 析构函数............................................................................................................................. 363

11.3.10 静态构造函数.................................................................................................................... 363

11.4 结构示例.................................................................................................................................... 364

11.4.1 数据库整数类型.................................................................................................................. 364

11.4.2 数据库布尔类型.................................................................................................................. 365

12. 数组................................................................................................................................................ 369

12.1 数组类型.................................................................................................................................... 369

12.1.1 System.Array 类型............................................................................................................... 370

12.1.2 数组和泛型 IList 接口........................................................................................................ 370

12.2 数组创建.................................................................................................................................... 370

12.3 数组元素访问............................................................................................................................ 371

12.4 数组成员.................................................................................................................................... 371

12.5 数组协变.................................................................................................................................... 371

12.6 数组初始值设定项..................................................................................................................... 371

13. 接口................................................................................................................................................ 373

13.1 接口声明.................................................................................................................................... 373

13.1.1 接口修饰符.......................................................................................................................... 373

13.1.2 分部修饰符.......................................................................................................................... 373

13.1.3 Variant 类型形参列表......................................................................................................... 374

13.1.3.1 变化安全性................................................................................................................... 374

13.1.3.2 变化转换....................................................................................................................... 375

13.1.4 基接口................................................................................................................................. 375

13.1.5 接口体................................................................................................................................. 376

13.2 接口成员.................................................................................................................................... 376

13.2.1 接口方法............................................................................................................................. 377

13.2.2 接口属性............................................................................................................................. 377

13.2.3 接口事件............................................................................................................................. 378

13.2.4 接口索引器.......................................................................................................................... 378

13.2.5 接口成员访问...................................................................................................................... 378

13.3 完全限定接口成员名................................................................................................................. 380

13.4 接口实现.................................................................................................................................... 380

13.4.1 显式接口成员实现.............................................................................................................. 381

13.4.2 所实现接口的唯一性........................................................................................................... 383

13.4.3 泛型方法实现...................................................................................................................... 384

13.4.4 接口映射............................................................................................................................. 385

13.4.5 接口实现继承...................................................................................................................... 387

13.4.6 接口重新实现...................................................................................................................... 389

13.4.7 抽象类和接口...................................................................................................................... 390

14. 枚举................................................................................................................................................ 391

14.1 枚举声明.................................................................................................................................... 391

14.2 枚举修饰符................................................................................................................................ 391

14.3 枚举成员.................................................................................................................................... 392

14.4 System.Enum 类型..................................................................................................................... 394

14.5 枚举值和运算............................................................................................................................ 394

15. 委托................................................................................................................................................ 395

15.1 委托声明.................................................................................................................................... 395

15.2 委托兼容性................................................................................................................................ 397

15.3 委托实例化................................................................................................................................ 397

15.4 委托调用.................................................................................................................................... 398

16. 异常................................................................................................................................................ 401

16.1 导致异常的原因......................................................................................................................... 401

16.2 System.Exception 类.................................................................................................................. 401

16.3 异常的处理方式......................................................................................................................... 401

16.4 公共异常类................................................................................................................................ 402

17. 特性................................................................................................................................................ 403

17.1 特性类........................................................................................................................................ 403

17.1.1 特性用法............................................................................................................................. 403

17.1.2 定位和命名参数.................................................................................................................. 404

17.1.3 特性参数类型...................................................................................................................... 405

17.2 特性说明.................................................................................................................................... 405

17.3 特性实例.................................................................................................................................... 410

17.3.1 特性的编译.......................................................................................................................... 410

17.3.2 特性实例的运行时检索....................................................................................................... 411

17.4 保留特性.................................................................................................................................... 411

17.4.1 AttributeUsage 特性............................................................................................................. 411

17.4.2 Conditional 特性.................................................................................................................. 412

17.4.2.1 条件方法....................................................................................................................... 412

17.4.2.2 条件特性类................................................................................................................... 414

17.4.3 Obsolete 特性...................................................................................................................... 415

17.4.4 调用方信息特性.................................................................................................................. 416

17.4.4.1 CallerLineNumber 特性................................................................................................. 417

17.4.4.2 CallerFilePath 特性........................................................................................................ 417

17.4.4.3 CallerMemberName 特性.............................................................................................. 417

17.5 互操作的特性............................................................................................................................ 417

17.5.1 与 COM 和 Win32 组件的互操作..................................................................................... 418

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

17.5.2.1 IndexerName 特性........................................................................................................ 418

18. 不安全代码.................................................................................................................................... 419

18.1 不安全上下文............................................................................................................................ 419

18.2 指针类型.................................................................................................................................... 421

18.3 固定和可移动变量..................................................................................................................... 424

18.4 指针转换.................................................................................................................................... 424

18.4.1 指针数组............................................................................................................................. 425

18.5 表达式中的指针......................................................................................................................... 426

18.5.1 指针间接寻址...................................................................................................................... 427

18.5.2 指针成员访问...................................................................................................................... 427

18.5.3 指针元素访问...................................................................................................................... 428

18.5.4 address-of 运算符................................................................................................................ 429

18.5.5 指针递增和递减.................................................................................................................. 429

18.5.6 指针算术运算...................................................................................................................... 430

18.5.7 指针比较............................................................................................................................. 431

18.5.8 sizeof 运算符....................................................................................................................... 431

18.6 fixed 语句.................................................................................................................................. 432

18.7 固定大小缓冲区......................................................................................................................... 435

18.7.1 固定大小缓冲区的声明....................................................................................................... 435

18.7.2 表达式中的固定大小缓冲区............................................................................................... 436

18.7.3 明确赋值 检查.................................................................................................................... 437

18.8 堆栈分配.................................................................................................................................... 437

18.9 动态内存分配............................................................................................................................ 438

A. 文档注释......................................................................................................................................... 441

A.1 介绍............................................................................................................................................. 441

A.2 建议的标记................................................................................................................................. 442

A.2.1 \t "See " \b................................................................................................................. 443

A.2.2 \t "See " \b...................................................................................................... 443

A.2.3 \t "See " \b.......................................................................................... 444

A.2.4 \t "See " \b...................................................................................... 444

A.2.5 ............................................................................................................................... 445

A.2.6 \t "See " \b............................................................................................................ 446

A.2.7 \t "See " \b....................................................................................................... 446

A.2.8 \t "See " \b................................................................................................. 447

A.2.9 \t "See " \b........................................................................................ 447

A.2.10 \t "See " \b................................................................................. 448

A.2.11 \t "See " \b........................................................................................... 448

A.2.12 \t "See " \b............................................................................................. 448

A.2.13 \t "See " \b......................................................................................................... 449

A.2.14 \t "See " \b............................................................................................ 449

A.2.15

\t "See " \b...................................................................................... 450

A.2.16 \t "See " \b.................................................................................................. 450

A.2.17 ........................................................................................................................ 450

A.2.18 ................................................................................................................... 451

A.3 处理文档文件.............................................................................................................................. 451

A.3.1 ID 字符串格式...................................................................................................................... 451

A.3.2 ID 字符串示例...................................................................................................................... 452

A.4 示例............................................................................................................................................. 456

A.4.1 C# 源代码............................................................................................................................. 456

A.4.2 生成的 XML......................................................................................................................... 458

B. 语法.................................................................................................................................................. 462

B.1 词法文法..................................................................................................................................... 462

B.1.1 行结束符............................................................................................................................... 462

B.1.2 注释...................................................................................................................................... 462

B.1.3 空白...................................................................................................................................... 463

B.1.4 标记...................................................................................................................................... 463

B.1.5 Unicode 字符转义序列......................................................................................................... 463

B.1.6 标识符................................................................................................................................... 463

B.1.7 关键字................................................................................................................................... 465

B.1.8 文本...................................................................................................................................... 465

B.1.9 运算符和标点符号................................................................................................................ 467

B.1.10 预处理指令......................................................................................................................... 467

B.2 句法文法..................................................................................................................................... 470

B.2.1 基本概念............................................................................................................................... 470

B.2.2 类型...................................................................................................................................... 470

B.2.3 变量...................................................................................................................................... 471

B.2.4 表达式................................................................................................................................... 471

B.2.5 语句...................................................................................................................................... 478

B.2.6 命名空间............................................................................................................................... 482

B.2.7 类.......................................................................................................................................... 482

B.2.8 结构...................................................................................................................................... 490

B.2.9 数组...................................................................................................................................... 490

B.2.10 接口.................................................................................................................................... 491

B.2.11 枚举.................................................................................................................................... 492

B.2.12 委托.................................................................................................................................... 493

B.2.13 特性.................................................................................................................................... 493

B.3 不安全代码的语法扩展............................................................................................................... 494

C. 参考资料......................................................................................................................................... 499

你可能感兴趣的:(C# 语言规范_版本5.0 (第0章 目录))