logo资料库

C#语言规范5.0中文版.pdf

第1页 / 共515页
第2页 / 共515页
第3页 / 共515页
第4页 / 共515页
第5页 / 共515页
第6页 / 共515页
第7页 / 共515页
第8页 / 共515页
资料共515页,剩余部分请下载后查看
C# 语言规范 版本 5.0 版权所有 Microsoft Corporation 1999-2012。保留所有权利。 请将更正、建议及其他反馈信息发送至 csharp@microsoft.com
注意 ? 1999-2012 Microsoft Corporation 。保留所有权利。 Microsoft 、Windows 、Visual Basic 、Visual C# 和 Visual C++ 是 Microsoft Corporation 在美国和 /或其他国家 /地区的 注册商标或商标。 本文提及的其他产品和公司名称可能是其各自所有者的商标。 版权所有 Microsoft Corporation 1999-2012。保留所有权利。
目录 目录 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 版权所有 Microsoft Corporation 1999-2012。保留所有权利。 iii
C# LANGUAGE SPECIFICATION 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 iv 版权所有 Microsoft Corporation 1999-2012。保留所有权利。
目录 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 的类型 ............................................................................................................................ 82 4.2 引用类型 ..................................................................................................................................................... 83 4.2.1 类类型 .................................................................................................................................................. 84 4.2.2 对象类型 .............................................................................................................................................. 84 4.2.3 dynamic 类型 ........................................................................................................................................ 84 4.2.4 string 类型 ............................................................................................................................................ 84 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 版权所有 Microsoft Corporation 1999-2012。保留所有权利。 v
C# LANGUAGE SPECIFICATION 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 vi 版权所有 Microsoft Corporation 1999-2012。保留所有权利。
目录 6.1.7 装箱转换 ............................................................................................................................................ 109 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 用户定义的显式转换 ........................................................................................................................ 116 6.3 标准转换 ................................................................................................................................................... 117 6.3.1 标准隐式转换 .................................................................................................................................... 117 6.3.2 标准显式转换 .................................................................................................................................... 117 6.4 用户定义的转换 ....................................................................................................................................... 117 6.4.1 允许的用户定义转换 ........................................................................................................................ 117 6.4.2 提升转换运算符 ................................................................................................................................ 117 6.4.3 用户定义转换的计算 ........................................................................................................................ 118 6.4.4 用户定义的隐式转换 ........................................................................................................................ 118 6.4.5 用户定义的显式转换 ........................................................................................................................ 119 6.5 匿名函数转换 ........................................................................................................................................... 120 6.5.1 匿名函数转换为委托类型的计算 ..................................................................................................... 121 6.5.2 匿名函数转换为表达式树类型的计算 ............................................................................................. 122 6.5.3 实现示例 ............................................................................................................................................ 122 6.6 方法组转换 ............................................................................................................................................... 124 7. 表达式 ............................................................................................................................................................. 127 7.1 表达式的分类 ........................................................................................................................................... 127 7.1.1 表达式的值 ........................................................................................................................................ 128 7.2 静态和动态绑定 ....................................................................................................................................... 128 7.2.1 绑定时间 ............................................................................................................................................ 129 7.2.2 动态绑定 ............................................................................................................................................ 129 7.2.3 构成表达式的类型 ............................................................................................................................ 129 7.3 运算符 ....................................................................................................................................................... 129 7.3.1 运算符的优先级和顺序关联性 ......................................................................................................... 130 7.3.2 运算符重载 ........................................................................................................................................ 131 7.3.3 一元运算符重载决策 ........................................................................................................................ 132 7.3.4 二元运算符重载决策 ........................................................................................................................ 132 7.3.5 候选用户定义运算符 ........................................................................................................................ 132 7.3.6 数值提升 ............................................................................................................................................ 133 7.3.6.1 一元数值提升 .............................................................................................................................. 133 版权所有 Microsoft Corporation 1999-2012。保留所有权利。 vii
C# LANGUAGE SPECIFICATION 7.3.6.2 二元数值提升 .............................................................................................................................. 133 7.3.7 提升运算符 ........................................................................................................................................ 134 7.4 成员查找 ................................................................................................................................................... 135 7.4.1 基类型 ................................................................................................................................................ 136 7.5 函数成员 ................................................................................................................................................... 136 7.5.1 实参列表 ............................................................................................................................................ 138 7.5.1.1 对应形参 ...................................................................................................................................... 139 7.5.1.2 实参列表的运行时计算 .............................................................................................................. 140 7.5.2 类型推断 ............................................................................................................................................ 141 7.5.2.1 第一阶段 ...................................................................................................................................... 142 7.5.2.2 第二阶段 ...................................................................................................................................... 142 7.5.2.3 输入类型 ...................................................................................................................................... 143 7.5.2.4 输出类型 ...................................................................................................................................... 143 7.5.2.5 依赖 .............................................................................................................................................. 143 7.5.2.6 输出类型推断 .............................................................................................................................. 143 7.5.2.7 参数类型显式推断 ...................................................................................................................... 143 7.5.2.8 精确推断 ...................................................................................................................................... 143 7.5.2.9 下限推断 ...................................................................................................................................... 143 7.5.2.10 上限推断 .................................................................................................................................... 144 7.5.2.11 固定 ............................................................................................................................................ 145 7.5.2.12 推断返回类型 ............................................................................................................................ 145 7.5.2.13 方法组转换的类型推断 ............................................................................................................ 146 7.5.2.14 查找一组表达式的最通用类型 ................................................................................................ 147 7.5.3 重载决策 ............................................................................................................................................ 147 7.5.3.1 适用函数成员 .............................................................................................................................. 147 7.5.3.2 更好的函数成员 .......................................................................................................................... 148 7.5.3.3 表达式的更佳转换 ...................................................................................................................... 149 7.5.3.4 类型的更佳转换 .......................................................................................................................... 149 7.5.3.5 更佳转换目标 .............................................................................................................................. 149 7.5.3.6 泛型类中的重载 .......................................................................................................................... 150 7.5.4 动态重载决策的编译时检查 ............................................................................................................. 150 7.5.5 函数成员调用 .................................................................................................................................... 151 7.5.5.1 已装箱实例上的调用 .................................................................................................................. 152 7.6 基本表达式 ............................................................................................................................................... 152 7.6.1 文本 .................................................................................................................................................... 153 7.6.2 简单名称 ............................................................................................................................................ 153 7.6.2.1 块中的固定含义 .......................................................................................................................... 154 7.6.3 带括号的表达式 ................................................................................................................................ 155 7.6.4 成员访问 ............................................................................................................................................ 155 7.6.4.1 相同的简单名称和类型名称 ...................................................................................................... 157 7.6.4.2 语法多义性 .................................................................................................................................. 157 7.6.5 调用表达式 ........................................................................................................................................ 158 7.6.5.1 方法调用 ...................................................................................................................................... 158 7.6.5.2 扩展方法调用 .............................................................................................................................. 159 7.6.5.3 委托调用 ...................................................................................................................................... 162 viii 版权所有 Microsoft Corporation 1999-2012。保留所有权利。
分享到:
收藏