logo资料库

微软官方C#语言规范5.0.doc

第1页 / 共517页
第2页 / 共517页
第3页 / 共517页
第4页 / 共517页
第5页 / 共517页
第6页 / 共517页
第7页 / 共517页
第8页 / 共517页
资料共517页,剩余部分请下载后查看
注意
1.介绍
1.1Hello world
1.2程序结构
1.3类型和变量
1.4表达式
1.5语句
1.6类和对象
1.6.1成员
1.6.2可访问性
1.6.3类型形参
1.6.4基类
1.6.5字段
1.6.6方法
1.6.6.1参数
1.6.6.2方法体和局部变量
1.6.6.3静态方法和实例方法
1.6.6.4虚方法、重写方法和抽象方法
1.6.6.5方法重载
1.6.7其他函数成员
1.6.7.1构造函数
1.6.7.2属性
1.6.7.3索引器
1.6.7.4事件
1.6.7.5运算符
1.6.7.6析构函数
1.7结构
1.8数组
1.9接口
1.10枚举
1.11委托
1.12特性
2.词法结构
2.1程序
2.2文法
2.2.1文法表示法
2.2.2词法文法
2.2.3句法文法
2.3语法分析
2.3.1行结束符
2.3.2注释
2.3.3空白
2.4标记
2.4.1Unicode 字符转义序列
2.4.2标识符
2.4.3关键字
2.4.4文本
2.4.4.1布尔值
2.4.4.2整数
2.4.4.3实数
2.4.4.4字符
2.4.4.5字符串
2.4.4.6null 文本
2.4.5运算符和标点符号
2.5预处理指令
2.5.1条件编译符号
2.5.2预处理表达式
2.5.3声明指令
2.5.4条件编译指令
2.5.5诊断指令
2.5.6区域指令
2.5.7行指令
2.5.8Pragma 指令
2.5.8.1Pragma warning
3.基本概念
3.1应用程序启动
3.2应用程序终止
3.3声明
3.4成员
3.4.1命名空间成员
3.4.2结构成员
3.4.3枚举成员
3.4.4类成员
3.4.5接口成员
3.4.6数组成员
3.4.7委托成员
3.5成员访问
3.5.1已声明可访问性
3.5.2可访问域
3.5.3实例成员的受保护访问
3.5.4可访问性约束
3.6签名和重载
3.7范围
3.7.1名称隐藏
3.7.1.1通过嵌套隐藏
3.7.1.2通过继承隐藏
3.8命名空间和类型名称
3.8.1完全限定名
3.9自动内存管理
3.10执行顺序
4.类型
4.1值类型
4.1.1System.ValueType 类型
4.1.2默认构造函数
4.1.3结构类型
4.1.4简单类型
4.1.5整型
4.1.6浮点型
4.1.7decimal 类型
4.1.8bool 类型
4.1.9枚举类型
4.1.10可以为 null 的类型
4.2引用类型
4.2.1类类型
4.2.2对象类型
4.2.3dynamic 类型
4.2.4string 类型
4.2.5接口类型
4.2.6数组类型
4.2.7委托类型
4.3装箱和拆箱
4.3.1装箱转换
4.3.2拆箱转换
4.4构造类型
4.4.1类型实参
4.4.2开放和封闭类型
4.4.3绑定和未绑定类型
4.4.4满足约束
4.5类型形参
4.6表达式树类型
4.7dynamic 类型
5.变量
5.1变量类别
5.1.1静态变量
5.1.2实例变量
5.1.2.1类中的实例变量
5.1.2.2结构中的实例变量
5.1.3数组元素
5.1.4值参数
5.1.5引用参数
5.1.6输出形参
5.1.7局部变量
5.2默认值
5.3明确赋值
5.3.1初始已赋值变量
5.3.2初始未赋值变量
5.3.3确定明确赋值的细则
5.3.3.1一般语句规则
5.3.3.2块语句、checked 和 unchecked 语句
5.3.3.3表达式语句
5.3.3.4声明语句
5.3.3.5if 语句
5.3.3.6switch 语句
5.3.3.7while 语句
5.3.3.8do 语句
5.3.3.9for 语句
5.3.3.10break、continue 和 goto 语句
5.3.3.11throw 语句
5.3.3.12return 语句
5.3.3.13try-catch 语句
5.3.3.14try-finally 语句
5.3.3.15try-catch-finally 语句
5.3.3.16foreach 语句
5.3.3.17using 语句
5.3.3.18lock 语句
5.3.3.19yield 语句
5.3.3.20简单表达式的一般规则
5.3.3.21带有嵌入表达式的表达式的一般规则
5.3.3.22调用表达式和对象创建表达式
5.3.3.23简单赋值表达式
5.3.3.24&& 表达式
5.3.3.25|| 表达式
5.3.3.26!表达式
5.3.3.27?? 表达式
5.3.3.28?: 表达式
5.3.3.29匿名函数
5.4变量引用
5.5变量引用的原子性
6.转换
6.1隐式转换
6.1.1标识转换
6.1.2隐式数值转换
6.1.3隐式枚举转换
6.1.4可以为 null 的隐式转换
6.1.5null 文本转换
6.1.6隐式引用转换
6.1.7装箱转换
6.1.8隐式动态转换
6.1.9隐式常量表达式转换
6.1.10涉及类型形参的隐式转换
6.1.11用户定义的隐式转换
6.1.12匿名函数转换和方法组转换
6.2显式转换
6.2.1显式数值转换
6.2.2显式枚举转换
6.2.3可以为 null 的显式转换
6.2.4显式引用转换
6.2.5拆箱转换
6.2.6显式动态转换
6.2.7涉及类型参数的显式转换
6.2.8用户定义的显式转换
6.3标准转换
6.3.1标准隐式转换
6.3.2标准显式转换
6.4用户定义的转换
6.4.1允许的用户定义转换
6.4.2提升转换运算符
6.4.3用户定义转换的计算
6.4.4用户定义的隐式转换
6.4.5用户定义的显式转换
6.5匿名函数转换
6.5.1匿名函数转换为委托类型的计算
6.5.2匿名函数转换为表达式树类型的计算
6.5.3实现示例
6.6方法组转换
7.表达式
7.1表达式的分类
7.1.1表达式的值
7.2静态和动态绑定
7.2.1绑定时间
7.2.2动态绑定
7.2.3构成表达式的类型
7.3运算符
7.3.1运算符的优先级和顺序关联性
7.3.2运算符重载
7.3.3一元运算符重载决策
7.3.4二元运算符重载决策
7.3.5候选用户定义运算符
7.3.6数值提升
7.3.6.1一元数值提升
7.3.6.2二元数值提升
7.3.7提升运算符
7.4成员查找
7.4.1基类型
7.5函数成员
7.5.1实参列表
7.5.1.1对应形参
7.5.1.2实参列表的运行时计算
7.5.2类型推断
7.5.2.1第一阶段
7.5.2.2第二阶段
7.5.2.3输入类型
7.5.2.4 输出类型
7.5.2.5依赖
7.5.2.6输出类型推断
7.5.2.7参数类型显式推断
7.5.2.8精确推断
7.5.2.9下限推断
7.5.2.10上限推断
7.5.2.11固定
7.5.2.12推断返回类型
7.5.2.13方法组转换的类型推断
7.5.2.14查找一组表达式的最通用类型
7.5.3重载决策
7.5.3.1适用函数成员
7.5.3.2更好的函数成员
7.5.3.3表达式的更佳转换
7.5.3.4类型的更佳转换
7.5.3.5更佳转换目标
7.5.3.6泛型类中的重载
7.5.4动态重载决策的编译时检查
7.5.5函数成员调用
7.5.5.1已装箱实例上的调用
7.6基本表达式
7.6.1文本
7.6.2简单名称
7.6.2.1块中的固定含义
7.6.3带括号的表达式
7.6.4成员访问
7.6.4.1相同的简单名称和类型名称
7.6.4.2语法多义性
7.6.5调用表达式
7.6.5.1方法调用
7.6.5.2扩展方法调用
7.6.5.3委托调用
7.6.6元素访问
7.6.6.1数组访问
7.6.6.2索引器访问
7.6.7this 访问
7.6.8基访问
7.6.9后缀增量和后缀减量运算符
7.6.10new 运算符
7.6.10.1对象创建表达式
7.6.10.2对象初始值设定项
7.6.10.3集合初始值设定项
7.6.10.4数组创建表达式
7.6.10.5委托创建表达式
7.6.10.6匿名对象创建表达式
7.6.11typeof 运算符
7.6.12checked 和 unchecked 运算符
7.6.13默认值表达式
7.6.14匿名方法表达式
7.7一元运算符
7.7.1一元加运算符
7.7.2一元减运算符
7.7.3逻辑否定运算符
7.7.4按位求补运算符
7.7.5前缀增量和减量运算符
7.7.6强制转换表达式
7.7.7Await 表达式
7.7.7.1可等待的表达式
7.7.7.2await 表达式的分类
7.7.7.3await 表达式的运行时计算
7.8算术运算符
7.8.1乘法运算符
7.8.2除法运算符
7.8.3余数运算符
7.8.4加法运算符
7.8.5减法运算符
7.9移位运算符
7.10关系和类型测试运算符
7.10.1整数比较运算符
7.10.2浮点比较运算符
7.10.3小数比较运算符
7.10.4布尔相等运算符
7.10.5枚举比较运算符
7.10.6引用类型相等运算符
7.10.7字符串相等运算符
7.10.8委托相等运算符
7.10.9相等运算符和 null
7.10.10is 运算符
7.10.11as 运算符
7.11逻辑运算符
7.11.1整数逻辑运算符
7.11.2枚举逻辑运算符
7.11.3布尔逻辑运算符
7.11.4可以为 null 的布尔逻辑运算符
7.12条件逻辑运算符
7.12.1布尔条件逻辑运算符
7.12.2用户定义的条件逻辑运算符
7.13空合并运算符
7.14条件运算符
7.15匿名函数表达式
7.15.1匿名函数签名
7.15.2匿名函数体
7.15.3重载决策
7.15.4匿名函数与动态绑定
7.15.5外层变量
7.15.5.1捕获的外层变量
7.15.5.2局部变量实例化
7.15.6匿名函数表达式计算
7.16查询表达式
7.16.1查询表达式的多义性
7.16.2查询表达式转换
7.16.2.1带继续符的 select 和 groupby 子句
7.16.2.2显式范围变量类型
7.16.2.3退化查询表达式
7.16.2.4from、let、where、join 和 orderby 子句
7.16.2.5select 子句
7.16.2.6Groupby 子句
7.16.2.7透明标识符
7.16.3 查询表达式模式
7.17赋值运算符
7.17.1简单赋值
7.17.2复合赋值
7.17.3事件赋值
7.18表达式
7.19常量表达式
7.20布尔表达式
8.语句
8.1结束点和可到达性
8.2块
8.2.1语句列表
8.3空语句
8.4标记语句
8.5声明语句
8.5.1局部变量声明
8.5.2局部常量声明
8.6表达式语句
8.7选择语句
8.7.1if 语句
8.7.2switch 语句
8.8迭代语句
8.8.1while 语句
8.8.2do 语句
8.8.3for 语句
8.8.4foreach 语句
8.9跳转语句
8.9.1break 语句
8.9.2continue 语句
8.9.3goto 语句
8.9.4return 语句
8.9.5throw 语句
8.10try 语句
8.11checked 语句和 unchecked 语句
8.12lock 语句
8.13using 语句
8.14yield 语句
9.命名空间
9.1编译单元
9.2命名空间声明
9.3Extern 别名
9.4using 指令
9.4.1using 别名指令
9.4.2Using 命名空间指令
9.5命名空间成员
9.6类型声明
9.7命名空间别名限定符
9.7.1别名的唯一性
10.类
10.1类声明
10.1.1类修饰符
10.1.1.1抽象类
10.1.1.2密封类
10.1.1.3静态类
10.1.1.3.1引用静态类类型
10.1.2分部修饰符
10.1.3类型参数
10.1.4类基本规范
10.1.4.1基类
10.1.4.2接口实现
10.1.5类型形参约束
10.1.6类体
10.2分部类型
10.2.1特性
10.2.2修饰符
10.2.3类型形参和约束
10.2.4基类
10.2.5基接口
10.2.6成员
10.2.7分部方法
10.2.8名称绑定
10.3类成员
10.3.1实例类型
10.3.2构造类型的成员
10.3.3继承
10.3.4new 修饰符
10.3.5访问修饰符
10.3.6构成类型
10.3.7静态成员和实例成员
10.3.8嵌套类型
10.3.8.1完全限定名
10.3.8.2已声明可访问性
10.3.8.3隐藏
10.3.8.4this 访问
10.3.8.5对包含类型的私有和受保护成员的访问
10.3.8.6泛型类中的嵌套类型
10.3.9保留成员名称
10.3.9.1为属性保留的成员名称
10.3.9.2为事件保留的成员名称
10.3.9.3为索引器保留的成员名称
10.3.9.4为析构函数保留的成员名称
10.4常量
10.5字段
10.5.1静态字段和实例字段
10.5.2只读字段
10.5.2.1对常量使用静态只读字段
10.5.2.2常量和静态只读字段的版本控制
10.5.3可变字段
10.5.4字段初始化
10.5.5变量初始值设定项
10.5.5.1静态字段初始化
10.5.5.2实例字段初始化
10.6方法
10.6.1方法形参
10.6.1.1值参数
10.6.1.2引用参数
10.6.1.3输出形参
10.6.1.4形参数组
10.6.2静态方法和实例方法
10.6.3虚方法
10.6.4重写方法
10.6.5密封方法
10.6.6抽象方法
10.6.7外部方法
10.6.8分部方法
10.6.9扩展方法
10.6.10方法体
10.6.11方法重载
10.7属性
10.7.1静态属性和实例属性
10.7.2访问器
10.7.3自动实现的属性
10.7.4可访问性
10.7.5虚、密封、重写和抽象访问器
10.8事件
10.8.1类似字段的事件
10.8.2事件访问器
10.8.3静态事件和实例事件
10.8.4虚、密封、重写和抽象访问器
10.9索引器
10.9.1索引器重载
10.10运算符
10.10.1一元运算符
10.10.2二元运算符
10.10.3转换运算符
10.11实例构造函数
10.11.1构造函数初始值设定项
10.11.2实例变量初始值设定项
10.11.3构造函数执行
10.11.4默认构造函数
10.11.5私有构造函数
10.11.6可选的实例构造函数形参
10.12静态构造函数
10.13析构函数
10.14迭代器
10.14.1枚举器接口
10.14.2可枚举接口
10.14.3产生类型
10.14.4枚举器对象
10.14.4.1MoveNext 方法
10.14.4.2Current 属性
10.14.4.3Dispose 方法
10.14.5可枚举对象
10.14.5.1GetEnumerator 方法
10.14.6实现示例
10.15异步函数
10.15.1返回任务的异步函数计算
10.15.2返回 void 的异步函数计算
11.结构
11.1结构声明
11.1.1结构修饰符
11.1.2分部修饰符
11.1.3结构接口
11.1.4结构体
11.2结构成员
11.3类和结构的区别
11.3.1值语义
11.3.2继承
11.3.3赋值
11.3.4默认值
11.3.5装箱和拆箱
11.3.6this 的含义
11.3.7字段初始值设定项
11.3.8构造函数
11.3.9析构函数
11.3.10静态构造函数
11.4结构示例
11.4.1数据库整数类型
11.4.2数据库布尔类型
12.数组
12.1数组类型
12.1.1System.Array 类型
12.1.2数组和泛型 IList 接口
12.2数组创建
12.3数组元素访问
12.4数组成员
12.5数组协变
12.6数组初始值设定项
13.接口
13.1接口声明
13.1.1接口修饰符
13.1.2分部修饰符
13.1.3Variant 类型形参列表
13.1.3.1变化安全性
13.1.3.2变化转换
13.1.4基接口
13.1.5接口体
13.2接口成员
13.2.1接口方法
13.2.2接口属性
13.2.3接口事件
13.2.4接口索引器
13.2.5接口成员访问
13.3完全限定接口成员名
13.4接口实现
13.4.1显式接口成员实现
13.4.2所实现接口的唯一性
13.4.3泛型方法实现
13.4.4接口映射
13.4.5接口实现继承
13.4.6接口重新实现
13.4.7抽象类和接口
14.枚举
14.1枚举声明
14.2枚举修饰符
14.3枚举成员
14.4System.Enum 类型
14.5枚举值和运算
15.委托
15.1委托声明
15.2委托兼容性
15.3委托实例化
15.4委托调用
16.异常
16.1导致异常的原因
16.2System.Exception 类
16.3异常的处理方式
16.4公共异常类
17.特性
17.1特性类
17.1.1特性用法
17.1.2定位和命名参数
17.1.3特性参数类型
17.2特性说明
17.3特性实例
17.3.1特性的编译
17.3.2特性实例的运行时检索
17.4保留特性
17.4.1AttributeUsage 特性
17.4.2Conditional 特性
17.4.2.1条件方法
17.4.2.2条件特性类
17.4.3Obsolete 特性
17.4.4调用方信息特性
17.4.4.1CallerLineNumber 特性
17.4.4.2CallerFilePath 特性
17.4.4.3CallerMemberName 特性
17.5互操作的特性
17.5.1与 COM 和 Win32 组件的互操作
17.5.2与其他 .NET 语言的互操作
17.5.2.1IndexerName 特性
18.不安全代码
18.1不安全上下文
18.2指针类型
18.3固定和可移动变量
18.4指针转换
18.4.1指针数组
18.5表达式中的指针
18.5.1指针间接寻址
18.5.2指针成员访问
18.5.3指针元素访问
18.5.4address-of 运算符
18.5.5指针递增和递减
18.5.6指针算术运算
18.5.7指针比较
18.5.8sizeof 运算符
18.6fixed 语句
18.7固定大小缓冲区
18.7.1固定大小缓冲区的声明
18.7.2表达式中的固定大小缓冲区
18.7.3明确赋值 检查
18.8堆栈分配
18.9动态内存分配
A.文档注释
A.1介绍
A.2建议的标记
A.2.1
A.2.2
A.2.3
A.2.4
A.2.5
A.2.6
A.2.7
A.2.8
A.2.9
A.2.10
A.2.11
A.2.12
A.2.13
A.2.14
A.2.15
A.2.16
A.2.17
A.2.18
A.3处理文档文件
A.3.1ID 字符串格式
A.3.2ID 字符串示例
A.4示例
A.4.1C# 源代码
A.4.2生成的 XML
B.语法
B.1词法文法
B.1.1行结束符
B.1.2注释
B.1.3空白
B.1.4标记
B.1.5Unicode 字符转义序列
B.1.6标识符
B.1.7关键字
B.1.8文本
B.1.9运算符和标点符号
B.1.10预处理指令
B.2句法文法
B.2.1基本概念
B.2.2类型
B.2.3变量
B.2.4表达式
B.2.5语句
B.2.6命名空间
B.2.7类
B.2.8结构
B.2.9数组
B.2.10接口
B.2.11枚举
B.2.12委托
B.2.13特性
B.3不安全代码的语法扩展
C.参考资料
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 其他函数成员....................................................................................................................................... 21 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.............................................................................................................................. 53 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 的类型.............................................................................................................................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 拆箱转换............................................................................................................................................... 87 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. 变量....................................................................................................................................................................93 5.1 变量类别......................................................................................................................................................93 5.1.1 静态变量............................................................................................................................................... 93 5.1.2 实例变量............................................................................................................................................... 93 5.1.2.1 类中的实例变量............................................................................................................................ 93 5.1.2.2 结构中的实例变量........................................................................................................................ 94 5.1.3 数组元素............................................................................................................................................... 94 5.1.4 值参数................................................................................................................................................... 94 5.1.5 引用参数............................................................................................................................................... 94 5.1.6 输出形参............................................................................................................................................... 94 5.1.7 局部变量............................................................................................................................................... 95 版权所有 Microsoft Corporation 1999-2012。保留所有权利。 v
C# LANGUAGE SPECIFICATION 5.2 默认值..........................................................................................................................................................95 5.3 明确赋值......................................................................................................................................................96 5.3.1 初始已赋值变量................................................................................................................................... 96 5.3.2 初始未赋值变量................................................................................................................................... 97 5.3.3 确定明确赋值的细则........................................................................................................................... 97 5.3.3.1 一般语句规则................................................................................................................................ 97 5.3.3.2 块语句、checked 和 unchecked 语句........................................................................................... 98 5.3.3.3 表达式语句.................................................................................................................................... 98 5.3.3.4 声明语句........................................................................................................................................ 98 5.3.3.5 if 语句............................................................................................................................................. 98 5.3.3.6 switch 语句.....................................................................................................................................99 5.3.3.7 while 语句.......................................................................................................................................99 5.3.3.8 do 语句........................................................................................................................................... 99 5.3.3.9 for 语句...........................................................................................................................................99 5.3.3.10 break、continue 和 goto 语句....................................................................................................100 5.3.3.11 throw 语句.................................................................................................................................. 100 5.3.3.12 return 语句..................................................................................................................................100 5.3.3.13 try-catch 语句............................................................................................................................. 100 5.3.3.14 try-finally 语句........................................................................................................................... 100 5.3.3.15 try-catch-finally 语句..................................................................................................................101 5.3.3.16 foreach 语句................................................................................................................................102 5.3.3.17 using 语句...................................................................................................................................102 5.3.3.18 lock 语句.....................................................................................................................................102 5.3.3.19 yield 语句....................................................................................................................................102 5.3.3.20 简单表达式的一般规则............................................................................................................ 102 5.3.3.21 带有嵌入表达式的表达式的一般规则.................................................................................... 102 5.3.3.22 调用表达式和对象创建表达式................................................................................................ 103 5.3.3.23 简单赋值表达式........................................................................................................................ 103 5.3.3.24 && 表达式................................................................................................................................. 103 5.3.3.25 || 表达式......................................................................................................................................104 5.3.3.26 !表达式....................................................................................................................................... 105 5.3.3.27 ?? 表达式....................................................................................................................................105 5.3.3.28 ?: 表达式.....................................................................................................................................106 5.3.3.29 匿名函数.................................................................................................................................... 106 5.4 变量引用....................................................................................................................................................107 5.5 变量引用的原子性....................................................................................................................................107 6. 转换..................................................................................................................................................................109 6.1 隐式转换....................................................................................................................................................109 6.1.1 标识转换............................................................................................................................................. 110 6.1.2 隐式数值转换..................................................................................................................................... 110 6.1.3 隐式枚举转换..................................................................................................................................... 110 6.1.4 可以为 null 的隐式转换.....................................................................................................................110 6.1.5 null 文本转换......................................................................................................................................111 6.1.6 隐式引用转换..................................................................................................................................... 111 vi 版权所有 Microsoft Corporation 1999-2012 。保留所有权利。
目录 6.1.7 装箱转换............................................................................................................................................. 111 6.1.8 隐式动态转换..................................................................................................................................... 112 6.1.9 隐式常量表达式转换......................................................................................................................... 112 6.1.10 涉及类型形参的隐式转换............................................................................................................... 112 6.1.11 用户定义的隐式转换....................................................................................................................... 113 6.1.12 匿名函数转换和方法组转换........................................................................................................... 113 6.2 显式转换....................................................................................................................................................113 6.2.1 显式数值转换..................................................................................................................................... 114 6.2.2 显式枚举转换..................................................................................................................................... 115 6.2.3 可以为 null 的显式转换.....................................................................................................................115 6.2.4 显式引用转换..................................................................................................................................... 116 6.2.5 拆箱转换............................................................................................................................................. 117 6.2.6 显式动态转换..................................................................................................................................... 117 6.2.7 涉及类型参数的显式转换................................................................................................................. 118 6.2.8 用户定义的显式转换......................................................................................................................... 119 6.3 标准转换....................................................................................................................................................119 6.3.1 标准隐式转换..................................................................................................................................... 119 6.3.2 标准显式转换..................................................................................................................................... 119 6.4 用户定义的转换........................................................................................................................................119 6.4.1 允许的用户定义转换......................................................................................................................... 119 6.4.2 提升转换运算符................................................................................................................................. 120 6.4.3 用户定义转换的计算......................................................................................................................... 120 6.4.4 用户定义的隐式转换......................................................................................................................... 121 6.4.5 用户定义的显式转换......................................................................................................................... 121 6.5 匿名函数转换............................................................................................................................................122 6.5.1 匿名函数转换为委托类型的计算..................................................................................................... 124 6.5.2 匿名函数转换为表达式树类型的计算............................................................................................. 124 6.5.3 实现示例............................................................................................................................................. 124 6.6 方法组转换................................................................................................................................................127 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 版权所有 Microsoft Corporation 1999-2012。保留所有权利。 vii
C# LANGUAGE SPECIFICATION 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 下限推断...................................................................................................................................... 146 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 更佳转换目标.............................................................................................................................. 152 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 viii 版权所有 Microsoft Corporation 1999-2012 。保留所有权利。
分享到:
收藏