版权所有 Microsoft Corporation 1999-2007。保留所有权利。
请将更正、建议及其他反馈信息发送至 sharp@microsoft.com
C
#
语言规范
3.0 版
2
C#语言规范
注意保留所有权利。Microsoft、Windows、Visual Basic、Visual C# 和 Visual C++ 是 Microsoft Corporation 在
美国和/或其他国家/地区的注册商标或商标。本文提及的其他产品和公司名称可能是其各自所有者的商标。
目录
版权所有 Microsoft Corporation 1999-2007。保留所有权利。
目录
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.7 其他函数成员 ..................................................................................................................................... 20
1.7 结构 ............................................................................................................................................................ 24
1.8 数组 ............................................................................................................................................................ 24
1.9 接口 ............................................................................................................................................................ 25
1.10 枚举 .......................................................................................................................................................... 26
1.11 委托 .......................................................................................................................................................... 27
1.12 属性 .......................................................................................................................................................... 28
2. 词法结构 .......................................................................................................................................................... 31
2.1 程序 ............................................................................................................................................................ 31
2.2 文法 ............................................................................................................................................................ 31
2.2.1 文法表示法 ......................................................................................................................................... 31
2.2.2 词法文法 ............................................................................................................................................. 32
2.2.3 句法文法 ............................................................................................................................................. 32
2.3 词法分析 .................................................................................................................................................... 32
2.3.1 行结束符 ............................................................................................................................................. 33
2.3.2 注释 ..................................................................................................................................................... 33
2.3.3 空白 ..................................................................................................................................................... 34
2.4 标记 ............................................................................................................................................................ 34
2.4.1 Unicode 字符转义序列 ....................................................................................................................... 35
2.4.2 标识符 ................................................................................................................................................. 35
2.4.3 关键字 ................................................................................................................................................. 37
2.4.4 文本 ..................................................................................................................................................... 37
2.4.5 运算符和标点符号 ............................................................................................................................. 42
2.5 预处理指令 ................................................................................................................................................ 42
2.5.1 条件编译符号 ..................................................................................................................................... 43
2.5.2 预处理表达式 ..................................................................................................................................... 43
2.5.3 声明指令 ............................................................................................................................................. 44
2.5.4 条件编译指令 ..................................................................................................................................... 45
iv
C#语言规范
2.5.5 诊断指令 ............................................................................................................................................. 47
2.5.6 区域指令 ............................................................................................................................................. 47
2.5.7 行指令 ................................................................................................................................................. 48
2.5.8 Pragma 指令 ........................................................................................................................................ 48
3. 基本概念 .......................................................................................................................................................... 50
3.1 应用程序启动 ............................................................................................................................................ 50
3.2 应用程序终止 ............................................................................................................................................ 50
3.3 声明 ............................................................................................................................................................ 51
3.4 成员 ............................................................................................................................................................ 53
3.4.1 命名空间成员 ..................................................................................................................................... 53
3.4.2 结构成员 ............................................................................................................................................. 53
3.4.3 枚举成员 ............................................................................................................................................. 53
3.4.4 类成员 ................................................................................................................................................. 53
3.4.5 接口成员 ............................................................................................................................................. 54
3.4.6 数组成员 ............................................................................................................................................. 54
3.4.7 委托成员 ............................................................................................................................................. 54
3.5 成员访问 .................................................................................................................................................... 54
3.5.1 已声明可访问性 ................................................................................................................................. 54
3.5.2 可访问域 ............................................................................................................................................. 55
3.5.3 实例成员的受保护访问...................................................................................................................... 57
3.5.4 可访问性约束 ..................................................................................................................................... 58
3.6 签名和重载 ................................................................................................................................................ 59
3.7 范围 ............................................................................................................................................................ 60
3.7.1 名称隐藏 ............................................................................................................................................. 62
3.8 命名空间和类型名称 ................................................................................................................................ 64
3.8.1 完全限定名 ......................................................................................................................................... 66
3.9 自动内存管理 ............................................................................................................................................ 66
3.10 执行顺序 .................................................................................................................................................. 69
4. 类型 .................................................................................................................................................................. 71
4.1 值类型 ........................................................................................................................................................ 71
4.1.1 System.ValueType 类型 ...................................................................................................................... 72
4.1.2 默认构造函数 ..................................................................................................................................... 72
4.1.3 结构类型 ............................................................................................................................................. 73
4.1.4 简单类型 ............................................................................................................................................. 73
4.1.5 整型 ..................................................................................................................................................... 74
4.1.6 浮点型 ................................................................................................................................................. 75
4.1.7 decimal 类型 ........................................................................................................................................ 76
4.1.8 bool 类型 ............................................................................................................................................. 76
4.1.9 枚举类型 ............................................................................................................................................. 76
4.1.10 可以为 null 的类型........................................................................................................................ 76
4.2 引用类型 .................................................................................................................................................... 77
4.2.1 类类型 ................................................................................................................................................. 78
4.2.2 对象类型 ............................................................................................................................................. 78
4.2.3 string 类型 ........................................................................................................................................... 78
目录
版权所有 Microsoft Corporation 1999-2007。保留所有权利。
4.2.4 接口类型 ............................................................................................................................................. 78
4.2.5 数组类型 ............................................................................................................................................. 78
4.2.6 委托类型 ............................................................................................................................................. 78
4.3 装箱和拆箱 ................................................................................................................................................ 79
4.3.1 装箱转换 ............................................................................................................................................. 79
4.3.2 拆箱转换 ............................................................................................................................................. 80
4.4 构造类型 .................................................................................................................................................... 81
4.4.1 类型实参 ............................................................................................................................................. 81
4.4.2 开放和封闭类型 ................................................................................................................................. 82
4.4.3 绑定和未绑定类型 ............................................................................................................................. 82
4.4.4 满足约束 ............................................................................................................................................. 82
4.5 类型形参 .................................................................................................................................................... 83
4.6 表达式目录树类型 .................................................................................................................................... 84
5. 变量 .................................................................................................................................................................. 85
5.1 变量类别 .................................................................................................................................................... 85
5.1.1 静态变量 ............................................................................................................................................. 85
5.1.2 实例变量 ............................................................................................................................................. 85
5.1.3 数组元素 ............................................................................................................................................. 86
5.1.4 值参数 ................................................................................................................................................. 86
5.1.5 引用形参 ............................................................................................................................................. 86
5.1.6 输出形参 ............................................................................................................................................. 86
5.1.7 局部变量 ............................................................................................................................................. 86
5.2 默认值 ........................................................................................................................................................ 87
5.3 明确赋值 .................................................................................................................................................... 87
5.3.1 初始已赋值变量 ................................................................................................................................. 88
5.3.2 初始未赋值变量 ................................................................................................................................. 88
5.3.3 确定明确赋值的细则 ......................................................................................................................... 88
5.4 变量引用 .................................................................................................................................................... 98
5.5 变量引用的原子性 .................................................................................................................................... 98
6. 转换 .................................................................................................................................................................. 99
6.1 隐式转换 .................................................................................................................................................... 99
6.1.1 标识转换 ............................................................................................................................................. 99
6.1.2 隐式数值转换 ..................................................................................................................................... 99
6.1.3 隐式枚举转换 ................................................................................................................................... 100
6.1.4 可以为 null 的隐式转换 ................................................................................................................. 100
6.1.5 null 文本转换 .................................................................................................................................... 100
6.1.6 隐式引用转换 ................................................................................................................................... 100
6.1.7 装箱转换 ........................................................................................................................................... 101
6.1.8 隐式常量表达式转换 ....................................................................................................................... 101
6.1.9 涉及类型形参的隐式转换................................................................................................................ 101
6.1.10 用户定义的隐式转换...................................................................................................................... 102
6.1.11 匿名函数转换和方法组转换 .......................................................................................................... 102
6.2 显式转换 .................................................................................................................................................. 102
6.2.1 显式数值转换 ................................................................................................................................... 102