C# 语法参考
文档中描述的词法和语法以及不安全代码的语法扩展的摘要。这里,各语法产生式是按它们在主文档中出现的顺序列出的。
C.1 词法
- input:(输入:)
- input-sectionopt(输入节可选) input-section:(输入节:)
- input-section-part(输入节部分)
input-section input-section-part(输入节 输入节部分) input-section-part:(输入节部分:) - input-elementsopt new-line(输入元素可选 新行)
pp-directive(pp 指令) input-elements:(输入元素:) - input-element(输入元素)
input-elements input-element(输入元素 输入元素) input-element:(输入元素:) - whitespace(空白)
comment(注释)
token(标记)
C.1.1 行结束符
- new-line:(新行:)
- 回车符 (U+000D)
换行符 (U+000A)
回车符 (U+000D) 后跟换行符 (U+000A)
行分隔符 (U+2028)
段落分隔符 (U+2029)
C.1.2 空白
- whitespace:(空白:)
- 任何含 Unicode 类 Zs 的字符
水平制表符 (U+0009)
垂直制表符 (U+000B)
换页符 (U+000C)
C.1.3 注释
- comment:(注释:)
- single-line-comment(单行注释)
delimited-comment(带分隔符的注释) single-line-comment:(单行注释:) - // input-charactersopt(// 输入字符可选) input-characters:(输入字符:)
- input-character(输入字符)
input-characters input-character(输入字符 输入字符) input-character:(输入字符:) - 除换行符外的任何 Unicode 字符 new-line-character:(换行符:)
- 回车符 (U+000D)
换行符 (U+000A)
行分隔符 (U+2028)
段落分隔符 (U+2029) delimited-comment:(带分隔符的注释:) - /* delimited-comment-charactersopt */(/* 带分隔符的注释字符可选 */) delimited-comment-characters:(带分隔符的注释字符:)
- delimited-comment-character(带分隔符的注释字符)
delimited-comment-characters delimited-comment-character(带分隔符的注释字符 带分隔符的注释字符) delimited-comment-character:(带分隔符的注释字符:) - not-asterisk(非星号)
* not-slash(* 非斜杠) not-asterisk:(非星号:) - 除 * 外的任何 Unicode 字符 not-slash:(非斜杠:)
- 除 / 外的任何 Unicode 字符
C.1.4 标记
- token:(标记:)
- identifier(标识符)
keyword(关键字)
integer-literal(整数)
real-literal(实数)
character-literal(字符)
string-literal(字符串)
operator-or-punctuator(运算符或标点)
C.1.5 Unicode 字符转义序列
- unicode-escape-sequence:(unicode 转义序列:)
- /u hex-digit hex-digit hex-digit hex-digit(/u 十六进制数字 十六进制数字 十六进制数字 十六进制数字)
/U hex-digit hex-digit hex-digit hex-digit hex-digit hex-digit hex-digit hex-digit(/U 十六进制数字 十六进制数字 十六进制数字 十六进制数字 十六进制数字 十六进制数字 十六进制数字 十六进制数字)
C.1.6 标识符
- identifier:(标识符:)
- available-identifier(可用的标识符)
@ identifier-or-keyword(@ 标识符或关键字) available-identifier:(可用的标识符:) - 不是“关键字”的“标识符或关键字” identifier-or-keyword:(标识符或关键字:)
- identifier-start-character identifier-part-charactersopt(标识符开始字符 标识符部分字符可选) identifier-start-character:(标识符开始字符:)
- letter-character(字母字符)
_
(the underscore character U+005F)(下划线字符 U+005F) identifier-part-characters:(标识符部分字符:) - identifier-part-character(标识符部分字符)
identifier-part-characters identifier-part-character(标识符部分字符 标识符部分字符) identifier-part-character:(标识符部分字符:) - letter-character(字母字符)
decimal-digit-character(十进制数字字符)
connecting-character(连接字符)
combining-character(组合字符)
formatting-character(格式设置字符) letter-character:(字母字符:) - 类 Lu、Ll、Lt、Lm、Lo 或 Nl 的 Unicode 字符
表示类 Lu、Ll、Lt、Lm、Lo 或 Nl 的字符的 unicode 转义序列 combining-character:(组合字符:) - 类 Mn 或 Mc 的 Unicode 字符
表示类 Mn 或 Mc 的字符的 unicode 转义序列 decimal-digit-character:(十进制数字字符:) - 类 Nd 的 Unicode 字符
表示类 Nd 的字符的 unicode 转义序列 connecting-character:(连接字符:) - 类 Pc 的 Unicode 字符
表示类 Pc 的字符的 unicode 转义序列 formatting-character:(格式设置字符:) - 类 Cf 的 Unicode 字符
表示类 Cf 的字符的 unicode 转义序列
C.1.7 关键字
- keyword: one of(关键字:下列之一)
-
abstract as base bool break byte case catch char checked class const continue decimal default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long namespace new null object operator out override params private protected public readonly ref return sbyte sealed short sizeof stackalloc static string struct switch this throw true try typeof uint ulong unchecked unsafe ushort using virtual void volatile while
C.1.8 文本
- literal:(文本:)
- boolean-literal(布尔值)
integer-literal(整数)
real-literal(实数)
character-literal(字符)
string-literal(字符串)
null-literal(空值) boolean-literal:(布尔值:) - true
false integer-literal:(整数:) - decimal-integer-literal(十进制整数)
hexadecimal-integer-literal(十六进制整数) decimal-integer-literal:(十进制整数:) - decimal-digits integer-type-suffixopt(十进制数字 整数类型后缀可选) decimal-digits:(十进制数字:)
- decimal-digit(十进制数字)
decimal-digits decimal-digit(十进制数字 十进制数字) decimal-digit: one of(十进制数字:下列之一) - 0 1 2 3 4 5 6 7 8 9 integer-type-suffix: one of(整数类型后缀:下列之一)
- U u L l UL Ul uL ul LU Lu lU lu hexadecimal-integer-literal:(十六进制整数:)
- 0x hex-digits integer-type-suffixopt(0x 十六进制数字 整型后缀可选)
0X hex-digits integer-type-suffixopt(0X 十六进制数字 整型后缀可选) hex-digits:(十六进制数字:) - hex-digit(十六进制数字)
hex-digits hex-digit(十六进制数字 十六进制数字) hex-digit: one of(十六进制数字:下列之一) - 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f real-literal:(实数:)
- decimal-digits . decimal-digits exponent-partopt real-type-suffixopt(十进制数字 . 十进制数字 指数部分可选 实数类型后缀可选)
. decimal-digits exponent-partopt real-type-suffixopt(. 十进制数字 指数部分可选 实数类型后缀可选)
decimal-digits exponent-part real-type-suffixopt(十进制数字 指数部分 实数类型后缀可选)
decimal-digits real-type-suffix(十进制数字 实数类型后缀) exponent-part:(指数部分:) - e signopt decimal-digits(e 符号可选 十进制数字)
E signopt decimal-digits(E 符号可选 十进制数字) sign: one of(符号:下列之一) - + - real-type-suffix: one of(实数类型后缀:下列之一)
- F f D d M m character-literal:(字符:)
- ' character '(' 字符 ') character:(字符:)
- single-character(单字符)
simple-escape-sequence(简单转义序列)
hexadecimal-escape-sequence(十六进制转义序列)
unicode-escape-sequence(unicode 转义序列) single-character:(单字符:) - 除 ' (U+0027)、/ (U+005C) 和换行符外的任何字符 simple-escape-sequence: one of(简单转义序列:下列之一)
- /' /" // /0 /a /b /f /n /r /t /v hexadecimal-escape-sequence:(十六进制转义序列:)
- /x hex-digit hex-digitopt hex-digitopt hex-digitopt(/x 十六进制数字 十六进制数字可选 十六进制数字可选 十六进制数字可选) string-literal:(字符串:)
- regular-string-literal(规则字符串)
verbatim-string-literal(逐字的字符串) regular-string-literal:(规则字符串:) - " regular-string-literal-charactersopt "(" 规则字符串字符可选 ") regular-string-literal-characters:(规则字符串字符:)
- regular-string-literal-character(规则字符串字符)
regular-string-literal-characters regular-string-literal-character(规则字符串字符 规则字符串字符) regular-string-literal-character:(规则字符串字符:) - single-regular-string-literal-character(单个规则字符串字符)
simple-escape-sequence(简单转义序列)
hexadecimal-escape-sequence(十六进制转义序列)
unicode-escape-sequence(unicode 转义序列) single-regular-string-literal-character:(单个规则字符串字符:) - 除 " (U+0022)、/ (U+005C) 和换行符外的任何字符 verbatim-string-literal:(逐字的字符串:)
- @" verbatim -string-literal-charactersopt "(@" 逐字的字符串字符可选 ") verbatim-string-literal-characters:(逐字的字符串字符:)
- verbatim-string-literal-character(逐字的字符串字符)
verbatim-string-literal-characters verbatim-string-literal-character(逐字的字符串字符 逐字的字符串字符) verbatim-string-literal-character:(逐字的字符串字符:) - single-verbatim-string-literal-character(单个逐字的字符串字符)
quote-escape-sequence(引号转义序列) single-verbatim-string-literal-character:(单个逐字的字符串字符:) - 除 " 外的任何字符 quote-escape-sequence:(引号转义序列:)
- "" null-literal:(空文本:)
- null
C.1.9 运算符和标点符号
- operator-or-punctuator:(运算符或标点符号:下列之一)
- { } [ ] ( ) . , : ;
+ - * / % & | ^ ! ~
= < > ? ++ -- && || << >>
== != <= >= += -= *= /= %= &=
| = ^= <<= >>= ->
C.1.10 预处理指令
- pp-directive:(pp 指令:)
- pp-declaration(pp 声明)
pp-conditional(pp 条件)
pp-line(pp 行)
pp-diagnostic(pp 诊断)
pp-region(pp 区域) pp-new-line:(pp 新行:) - whitespaceopt single-line-commentopt new-line(空白可选 单行注释可选 新行) conditional-symbol:(条件符号:)
- 除 true 和 false 外的任何标识符或关键字 pp-expression:(pp 表达式:)
- whitespaceopt pp-or-expression whitespaceopt(空白可选 pp 或表达式 空白可选) pp-or-expression:(pp 或表达式:)
- pp-and-expression(pp 与表达式)
pp-or-expression whitespaceopt || whitespaceopt pp-and-expression(pp 或表达式 空白可选 || 空白可选 pp 与表达式) pp-and-expression:(pp 与表达式:) - pp-equality-expression(pp 相等表达式)
pp-and-expression whitespaceopt && whitespaceopt pp-equality-expression(pp 与表达式 空白可选 && 空白可选 pp 相等表达式) pp-equality-expression:(pp 相等表达式:) - pp-unary-expression(pp 一元表达式)
pp-equality-expression whitespaceopt == whitespaceopt pp-unary-expression(pp 相等表达式 空白可选 == 空白可选 pp 一元表达式)
pp-equality-expression whitespaceopt != whitespaceopt pp-unary-expression(pp 相等表达式 空白可选 != 空白可选 pp 一元表达式) pp-unary-expression:(pp 一元表达式:) - pp-primary-expression(pp 基本表达式)
! whitespaceopt pp-unary-expression(! 空白可选 pp 一元表达式) pp-primary-expression:(pp 基本表达式:) - true
false
conditional-symbol(条件符号)
( whitespaceopt pp-expression whitespaceopt )((空白可选 pp 表达式 空白可选 )) pp-declaration:(pp 声明:) - whitespaceopt # whitespaceopt define whitespace conditional-symbol pp-new-line(空白可选 # 空白可选 define 空白 条件符号 pp 新行)
whitespaceopt # whitespaceopt undef whitespace conditional-symbol pp-new-line(空白可选 # 空白可选 undef 空白 条件符号 pp 新行) pp-conditional:(pp 条件:) - pp-if-section pp-elif-sectionsopt pp-else-sectionopt pp-endif(pp if 节 pp elif 节可选 pp else 节可选 pp endif) pp-if-section:(pp if 节:)
- whitespaceopt # whitespaceopt if whitespace pp-expression pp-new-line conditional-sectionopt(空白可选 # 空白可选 if 空白 pp 表达式 pp 新行 条件节可选) pp-elif-sections:(pp elif 节:)
- pp-elif-section(pp elif 节)
pp-elif-sections pp-elif-section(pp elif 节 pp elif 节) pp-elif-section:(pp elif 节:) - whitespaceopt # whitespaceopt elif whitespace pp-expression pp-new-line conditional-sectionopt(空白可选 # 空白可选 elif 空白 pp 表达式 pp 新行 条件节可选) pp-else-section:(pp else 节:)
- whitespaceopt # whitespaceopt else pp-new-line conditional-sectionopt(空白可选 # 空白可选 else pp 新行 条件节可选) pp-endif:
- whitespaceopt # whitespaceopt endif pp-new-line(空白可选 # 空白可选 endif pp 新行) conditional-section:(条件节:)
- input-section(输入节)
skipped-section(跳过节) skipped-section:(跳过节:) - skipped-section-part(跳过节部分)
skipped-section skipped-section-part(跳过节 跳过节部分) skipped-section-part:(跳过节部分:) - skipped-charactersopt new-line(跳过字符可选 新行)
pp-directive(pp 指令) skipped-characters:(跳过字符:) - whitespaceopt not-number-sign input-charactersopt(空白可选 非数字符号 输入字符可选) not-number-sign:(非数字符号:)
- 除 # 外的任何输入字符 pp-line:(pp 行:)
- whitespaceopt # whitespaceopt line whitespace line-indicator pp-new-line(空白可选 # 空白可选 line 空白 行指示符 pp 新行) line-indicator:(行指示符:)
- decimal-digits whitespace file-name(十进制数字 空白 文件名)
decimal-digits(十进制数字)
default(default) file-name:(文件名:) - " file-name-characters "(" 文件名字符 ") file-name-characters:(文件名字符:)
- file-name-character(文件名字符)
file-name-characters file-name-character(文件名字符 文件名字符) file-name-character:(文件名字符:) - 除 " 外的任何输入字符 pp-diagnostic:(pp 诊断:)
- whitespaceopt # whitespaceopt error pp-message(空白可选 # 空白可选 error pp 消息)
whitespaceopt # whitespaceopt warning pp-message(空白可选 # 空白可选 warning pp 消息) pp-message:(pp 消息:) - new-line(新行)
whitespace input-charactersopt new-line(空白 输入字符可选 新行) pp-region:(pp 区域:) - pp-start-region conditional-sectionopt pp-end-region(pp 开始区域 条件节可选 pp 结束区域) pp-start-region:(pp 开始区域:)
- whitespaceopt # whitespaceopt region pp-message(空白可选 # 空白可选 region pp 消息) pp-end-region:(pp 结束区域:)
- whitespaceopt # whitespaceopt endregion pp-message(空白可选 # 空白可选 endregion pp 消息)
C.2 语法
C.2.1 基本概念
- namespace-name:(命名空间名称:)
- namespace-or-type-name(命名空间或类型名称) type-name:(类型名:)
- namespace-or-type-name(命名空间或类型名称) namespace-or-type-name:(命名空间或类型名称:)
- identifier(标识符)
namespace-or-type-name . identifier(命名空间或类型名称 . 标识符)
C.2.2 类型
- type:(类型:)
- value-type(值类型)
reference-type(引用类型) value-type:(值类型:) - struct-type(结构类型)
enum-type(枚举类型) struct-type:(结构类型:) - type-name(类型名称)
simple-type(简单类型) simple-type:(简单类型:) - numeric-type(数值类型)
bool numeric-type:(数值类型:) - integral-type(整型)
floating-point-type(浮点类型)
decimal integral-type:(整型:) - sbyte
byte
short
ushort
int
uint
long
ulong
char floating-point-type:(浮点类型:) - float
double enum-type:(枚举类型:) - type-name(类型名) reference-type:(引用类型:)
- class-type(类类型)
interface-type(接口类型)
array-type(数组类型)
delegate-type(委托类型) class-type:(类类型:) - type-name(类型名)
object
string interface-type:(接口类型:) - type-name(类型名) array-type:(数组类型:)
- non-array-type rank-specifiers(非数组类型 秩说明符) non-array-type:(非数组类型:)
- type(类型) rank-specifiers:(秩说明符:)
- rank-specifier(秩说明符)
rank-specifiers rank-specifier(秩说明符 秩说明符) rank-specifier:(秩说明符) - [ dim-separatorsopt ]([ 维度分隔符可选 ]) dim-separators:(维度分隔符:)
- ,
dim-separators ,(维度分隔符 ,) delegate-type:(委托类型:) - type-name(类型名)
C.2.3 变量
- variable-reference:(变量引用:)
- expression(表达式)
C.2.4 表达式
- argument-list:(参数列表:)
- argument(参数)
argument-list , argument(参数列表 , 参数) argument:(参数:) - expression(表达式)
ref variable-reference(ref 变量引用)
out variable-reference(out 变量引用) primary-expression:(基本表达式:) - primary-no-array-creation-expression(非数组创建基本表达式)
array-creation-expression(数组创建表达式) primary-no-array-creation-expression:(非数组创建基本表达式:) - literal(文本)
simple-name(简称)
parenthesized-expression(带括号的表达式)
member-access(成员访问)
invocation-expression(调用表达式)
element-access(元素访问)
this-access(this 访问)
base-access(base 访问)
post-increment-expression(后增量表达式)
post-decrement-expression(后减量表达式)
object-creation-expression(对象创建表达式)
delegate-creation-expression(委托创建表达式)
typeof-expression(typeof 表达式)
sizeof-expression(sizeof 表达式)
checked-expression(checked 表达式)
unchecked-expression(unchecked 表达式) simple-name:(简称:) - identifier(标识符) parenthesized-expression:(带括号的表达式:)
- ( expression )(( 表达式 )) member-access:(成员访问:)
- primary-expression . identifier(基本表达式 . 标识符)
predefined-type . identifier(预定义类型 . 标识符) predefined-type: one of(预定义类型:下列之一) - bool byte char decimal double float int long
object sbyte short string uint ulong ushort invocation-expression:(调用表达式:) - primary-expression ( argument-listopt )(基本表达式 ( 参数列表可选 )) element-access:(元素访问:)
- primary-no-array-creation-expression [ expression-list ](非数组创建基本表达式 [ 表达式列表 ]) expression-list:(表达式列表:)
- expression(表达式)
expression-list , expression(表达式列表 , 表达式) this-access:(this 访问:) - this base-access:(base 访问:)
- base . identifier(base . 标识符)
base [ expression-list ](base [ 表达式列表 ]) post-increment-expression:(后增量表达式:) - primary-expression ++(基本表达式 ++) post-decrement-expression:(后减量表达式:)
- primary-expression --(基本表达式 --) object-creation-expression:(对象创建表达式:)
- new type ( argument-listopt )(new 类型 ( 参数列表可选 )) array-creation-expression:(数组创建表达式:)
- new non-array-type [ expression-list ] rank-specifiersopt array-initializeropt(new 非数组类型 [ 表达式列表 ] 秩说明符可选 数组初始值设定项可选)
new array-type array-initializer(new 数组类型 数组初始值设定项) delegate-creation-expression:(委托创建表达式:) - new delegate-type ( expression )(new 委托类型 ( 表达式 )) typeof-expression:(typeof 表达式:)
- typeof ( type )(typeof ( 类型 ))
typeof ( void ) checked-expression:(checked 表达式:) - checked ( expression )(checked ( 表达式 )) unchecked-expression:(unchecked 表达式:)
- unchecked ( expression )(unchecked ( 表达式 )) unary-expression:(一元表达式:)
- primary-expression(基本表达式)
+ unary-expression(+ 一元表达式)
- unary-expression(- 一元表达式)
! unary-expression(! 一元表达式)
~ unary-expression(~ 一元表达式)
* unary-expression(* 一元表达式)
pre-increment-expression(前增量表达式)
pre-decrement-expression(前减量表达式)
cast-expression(强制转换表达式) pre-increment-expression:(前增量表达式:) - ++ unary-expression(++ 一元表达式) pre-decrement-expression:(前减量表达式:)
- -- unary-expression(-- 一元表达式) cast-expression:(强制转换表达式:)
- ( type ) unary-expression(( 类型 ) 一元表达式) multiplicative-expression:(乘法表达式:)
- unary-expression(一元表达式)
multiplicative-expression * unary-expression(乘法表达式 * 一元表达式)
multiplicative-expression / unary-expression(乘法表达式 / 一元表达式)
multiplicative-expression % unary-expression(乘法表达式 % 一元表达式) additive-expression:(增量表达式:) - multiplicative-expression(乘法表达式)
additive-expression + multiplicative-expression(加法表达式 + 乘法表达式)
additive-expression – multiplicative-expression(加法表达式 – 乘法表达式) shift-expression:(移位表达式:) - additive-expression(加法表达式)
shift-expression << additive-expression(移位表达式 << 加法表达式)
shift-expression >> additive-expression(移位表达式 >> 加法表达式) relational-expression:(关系表达式:) - shift-expression(移位表达式)
relational-expression < shift-expression(关系表达式 < 移位表达式)
relational-expression > shift-expression(关系表达式 > 移位表达式)
relational-expression <= shift-expression(关系表达式 <= 移位表达式)
relational-expression >= shift-expression(关系表达式 >= 移位表达式)
relational-expression is type(关系表达式 is 类型)
relational-expression as type(关系表达式 as 类型) equality-expression:(相等表达式:) - relational-expression(关系表达式)
equality-expression == relational-expression(相等表达式 == 关系表达式)
equality-expression != relational-expression(相等表达式 != 关系表达式) and-expression:(与表达式:) - equality-expression(相等表达式)
and-expression & equality-expression(与表达式 & 相等表达式) exclusive-or-expression:(异或表达式:) - and-expression(与表达式)
exclusive-or-expression ^ and-expression(异或表达式 ^ 与表达式) inclusive-or-expression:(或表达式:) - exclusive-or-expression(异或表达式)
inclusive-or-expression | exclusive-or-expression(异或表达式 | 异或表达式) conditional-and-expression:(条件与表达式:) - inclusive-or-expression(或表达式)
conditional-and-expression && inclusive-or-expression(条件与表达式 && 或表达式) conditional-or-expression:(条件或表达式:) - conditional-and-expression(条件与表达式)
conditional-or-expression || conditional-and-expression(条件或表达式 || 条件与表达式) conditional-expression:(条件表达式:) - conditional-or-expression(条件或表达式)
conditional-or-expression ? expression : expression(条件或表达式 ? 表达式 : 表达式) assignment:(赋值:) - unary-expression assignment-operator expression(一元表达式 赋值运算符 表达式) assignment-operator: one of(赋值运算符:下列之一)
- = += -= *= /= %= &= | = ^= <<= >>= expression:(表达式:)
- conditional-expression(条件表达式)
assignment(赋值) constant-expression:(常数表达式:) - expression(表达式) boolean-expression:(布尔表达式:)
- expression(表达式)
C.2.5 语句
- statement:(语句:)
- labeled-statement(标记语句)
declaration-statement(声明语句)
embedded-statement(嵌入语句) embedded-statement:(嵌入语句:) - block(块)
empty-statement(空语句)
expression-statement(表达式语句)
selection-statement(选择语句)
iteration-statement(迭代语句)
jump-statement(跳转语句)
try-statement(try 语句)
checked-statement(checked 语句)
unchecked-statement(unchecked 语句)
lock-statement(lock 语句)
using-statement(using 语句) block:(块:) - { statement-listopt }({ 语句列表可选 }) statement-list:(语句列表:)
- statement(语句)
statement-list statement(语句列表 语句) empty-statement:(空语句:) - ; labeled-statement:(标记语句:)
- identifier : statement(标识符 : 语句) declaration-statement:(声明语句:)
- local-variable-declaration ;(局部变量声明 ;)
local-constant-declaration ;(局部常数声明 ;) local-variable-declaration:(局部变量声明:) - type local-variable-declarators(类型 局部变量声明符) local-variable-declarators:(局部变量声明符:)
- local-variable-declarator(局部变量声明符)
local-variable-declarators , local-variable-declarator(局部变量声明符 , 局部变量声明符) local-variable-declarator:(局部变量声明符:) - identifier(标识符)
identifier = local-variable-initializer(标识符 = 局部变量初始值设定项) local-variable-initializer:(局部变量初始值设定项:) - expression(表达式)
array-initializer(数组初始值设定项) local-constant-declaration:(局部常数声明:) - const type constant-declarators(const 类型 常数声明符) constant-declarators:(常数声明符:)
- constant-declarator(常数声明符)
constant-declarators , constant-declarator(常数声明符 , 常数声明符) constant-declarator:(常数声明符:) - identifier = constant-expression(标识符 = 常数表达式) expression-statement:(表达式语句:)
- statement-expression ;(语句表达式 ;) statement-expression:(语句表达式:)
- invocation-expression(调用表达式)
object-creation-expression(对象创建表达式)
assignment(赋值)
post-increment-expression(后递增表达式)
post-decrement-expression(后递减表达式)
pre-increment-expression(前递增表达式)
pre-decrement-expression(前递减表达式) selection-statement:(选择语句:) - if-statement(if 语句)
switch-statement(switch 语句) if-statement:(if 语句:) - if ( boolean-expression ) embedded-statement(if ( 布尔表达式 ) 嵌入语句)
if ( boolean-expression ) embedded-statement else embedded-statement(if ( 布尔表达式 ) 嵌入语句 else 嵌入语句) boolean-expression:(布尔表达式:) - expression(表达式) switch-statement:(switch 语句:)
- switch ( expression ) switch-block(switch ( 表达式 ) switch 块) switch-block:(switch 块:)
- { switch-sectionsopt }({ switch 节可选 }) switch-sections:(switch 节:)
- switch-section(switch 节)
switch-sections switch-section(switch 节 switch 节) switch-section:(switch 节:) - switch-labels statement-list(switch 标签 语句列表) switch-labels:(switch 标签:)
- switch-label(switch 标签)
switch-labels switch-label(switch 标签 switch 标签) switch-label:(switch 标签:) - case constant-expression :(case 常数表达式 :)
default :(default :) iteration-statement:(迭代语句:) - while-statement(while 语句)
do-statement(do 语句)
for-statement(for 语句)
foreach-statement(foreach 语句) while-statement:(while 语句:) - while ( boolean-expression ) embedded-statement(while ( 布尔表达式 ) 嵌入语句) do-statement:(do 语句:)
- do embedded-statement while ( boolean-expression ) ;(do 嵌入语句 while ( 布尔表达式 ) ;) for-statement:(for 语句:)
- for ( for-initializeropt ; for-conditionopt ; for-iteratoropt ) embedded-statement(for ( for 初始值设定项可选 ; for 条件可选 ; for 迭代程序可选 ) 嵌入语句) for-initializer:(for 初始值设定项:)
- local-variable-declaration(局部变量声明)
statement-expression-list(语句表达式列表) for-condition:(for 条件:) - boolean-expression(布尔表达式) for-iterator:(for 迭代程序:)
- statement-expression-list(语句表达式列表) statement-expression-list:(语句表达式列表:)
- statement-expression(语句表达式)
statement-expression-list , statement-expression(语句表达式列表 , 语句表达式) foreach-statement:(foreach 语句:) - foreach ( type identifier in expression ) embedded-statement(foreach ( 类型 标识符 in 表达式 ) 嵌入语句) jump-statement:(跳转语句:)
- break-statement(break 语句)
continue-statement(continue 语句)
goto-statement(goto 语句)
return-statement(return 语句)
throw-statement(throw 语句) break-statement:(break 语句:) - break ; continue-statement:(continue 语句:)
- continue ; goto-statement:(goto 语句:)
- goto identifier ;(goto 标识符 ;)
goto case constant-expression ;(goto case 常数表达式 ;)
goto default ;(goto default ;) return-statement:(return 语句:) - return expressionopt ;(return 表达式可选 ;) throw-statement:(throw 语句:)
- throw expressionopt ;(throw 表达式可选 ;) try-statement:(try 语句:)
- try block catch-clauses(try 块 catch 子句)
try block finally-clause(try 块 finally 子句)
try block catch-clauses finally-clause(try 块 catch 子句 finally 子句) catch-clauses:(catch 子句:) - specific-catch-clauses general-catch-clauseopt(特定 catch 子句 常规 catch 子句可选)
specific-catch-clausesopt general-catch-clause(特定 catch 子句可选 常规 catch 子句) specific-catch-clauses:(特定 catch 子句:) - specific-catch-clause(特定 catch 子句)
specific-catch-clauses specific-catch-clause(特定 catch 子句 特定 catch 子句) specific-catch-clause:(特定 catch 子句:) - catch ( class-type identifieropt ) block(catch ( 类类型 标识符可选 ) 块) general-catch-clause:(常规 catch 子句:)
- catch block(catch 块) finally-clause:(finally 子句:)
- finally block(finally 块) checked-statement:(checked 语句:)
- checked block(checked 块) unchecked-statement:(unchecked 语句:)
- unchecked block(unchecked 块) lock-statement:(lock 语句:)
- lock ( expression ) embedded-statement(lock ( 表达式 ) 嵌入语句) using-statement:(using 语句:)
- using ( resource-acquisition ) embedded-statement(using ( 资源获取 ) 嵌入语句) resource-acquisition:(资源获取:)
- local-variable-declaration(局部变量声明)
expression(表达式)
C.2.6 命名空间
- compilation-unit:(编译单元:)
- using-directivesopt global-attributesopt namespace-member-declarationsopt(using 指令可选 全局属性可选 命名空间成员声明可选) namespace-declaration:(命名空间声明:)
- namespace qualified-identifier namespace-body ;opt(命名空间 限定标识符 命名空间体 ;可选) qualified-identifier:(限定标识符:)
- identifier(标识符)
qualified-identifier . identifier(限定标识符 . 标识符) namespace-body:(命名空间体:) - { using-directivesopt namespace-member-declarationsopt }({ using 指令可选 命名空间成员声明可选 }) using-directives:(using 指令:)
- using-directive(using 指令)
using-directives using-directive(using 指令 using 指令) using-directive:(using 指令:) - using-alias-directive(using 别名指令)
using-namespace-directive(using 命名空间指令) using-alias-directive:(using 别名指令:) - using identifier = namespace-or-type-name ;(using 标识符 = 命名空间或类型名称 ;) using-namespace-directive:(using 命名空间指令:)
- using namespace-name ;(using 命名空间名称 ;) namespace-member-declarations:(命名空间成员声明:)
- namespace-member-declaration(命名空间成员声明)
namespace-member-declarations namespace-member-declaration(命名空间成员声明 命名空间成员声明) namespace-member-declaration:(命名空间成员声明:) - namespace-declaration(命名空间声明)
type-declaration(类型声明) type-declaration:(类型声明:) - class-declaration(类声明)
struct-declaration(结构声明)
interface-declaration(接口声明)
enum-declaration(枚举声明)
delegate-declaration(委托声明)
C.2.7 类
- class-declaration:(类声明:)
- attributesopt class-modifiersopt class identifier class-baseopt class-body ;opt(属性可选 类修饰符可选 class 标识符 类基可选 类体 ;可选) class-modifiers:(类修饰符:)
- class-modifier(类修饰符)
class-modifiers class-modifier(类修饰符 类修饰符) class-modifier:(类修饰符:) - new
public
protected
internal
private
abstract
sealed class-base:(类基:) - : class-type(: 类类型)
: interface-type-list(: 接口类型列表)
: class-type , interface-type-list(: 类类型 , 接口类型列表) interface-type-list:(接口类型列表:) - interface-type(接口类型)
interface-type-list , interface-type(接口类型列表 , 接口类型) class-body:(类体:) - { class-member-declarationsopt }({ 类成员声明可选 }) class-member-declarations:(类成员声明:)
- class-member-declaration(类成员声明)
class-member-declarations class-member-declaration(类成员声明 类成员声明) class-member-declaration:(类成员声明:) - constant-declaration(常数声明)
field-declaration(字段声明)
method-declaration(方法声明)
property-declaration(属性声明)
event-declaration(事件声明)
indexer-declaration(索引器声明)
operator-declaration(运算符声明)
constructor-declaration(构造函数声明)
destructor-declaration(析构函数声明)
static-constructor-declaration(静态构造函数声明)
type-declaration(类型声明) constant-declaration:(常数声明:) - attributesopt constant-modifiersopt const type constant-declarators ;(属性可选 常数修饰符可选 const 类型 常数声明符 ;) constant-modifiers:(常数修饰符:)
- constant-modifier(常数修饰符)
constant-modifiers constant-modifier(常数修饰符 常数修饰符) constant-modifier:(常数修饰符:) - new
public
protected
internal
private constant-declarators:(常数声明符:) - constant-declarator(常数声明符)
constant-declarators , constant-declarator(常数声明符 , 常数声明符) constant-declarator:(常数声明符:) - identifier = constant-expression(标识符 = 常数表达式) field-declaration:(字段声明:)
- attributesopt field-modifiersopt type variable-declarators ;(属性可选 字段修饰符可选 类型 变量声明符 ;) field-modifiers:(字段修饰符:)
- field-modifier(字段修饰符)
field-modifiers field-modifier(字段修饰符 字段修饰符) field-modifier:(字段修饰符:) - new
public
protected
internal
private
static
readonly
volatile variable-declarators:(变量声明符:) - variable-declarator(变量声明符)
variable-declarators , variable-declarator(变量声明符 , 变量声明符) variable-declarator:(变量声明符:) - identifier(标识符)
identifier = variable-initializer(标识符 = 变量初始值设定项) variable-initializer:(变量初始值设定项:) - expression(表达式)
array-initializer(数组初始值设定项) method-declaration:(方法声明:) - method-header method-body(方法头 方法体) method-header:(方法头:)
- attributesopt method-modifiersopt return-type member-name ( formal-parameter-listopt )(属性可选 方法修饰符可选 返回类型 成员名 ( 形参表可选 )) method-modifiers:(方法修饰符:)
- method-modifier(方法修饰符)
method-modifiers method-modifier(方法修饰符 方法修饰符) method-modifier:(方法修饰符:) - new
public
protected
internal
private
static
virtual
sealed
override
abstract
extern return-type:(返回类型:) - type(类型)
void member-name:(成员名:) - identifier(标识符)
interface-type . identifier(接口类型 . 标识符) method-body:(方法体:) - block(块)
; formal-parameter-list:(形参表:) - fixed-parameters(固定参数)
fixed-parameters , parameter-array(固定参数 , 参数数组)
parameter-array(参数数组) fixed-parameters:(固定参数:) - fixed-parameter(固定参数)
fixed-parameters , fixed-parameter(固定参数 , 固定参数) fixed-parameter:(固定参数:) - attributesopt parameter-modifieropt type identifier(属性可选 参数修饰符可选 类型 标识符) parameter-modifier:(参数修饰符:)
- ref
out parameter-array:(参数数组:) - attributesopt params array-type identifier(属性可选 params 数组类型 标识符) property-declaration:(属性声明:)
- attributesopt property-modifiersopt type member-name { accessor-declarations }(属性可选 属性修饰符可选 类型 成员名 { 访问器声明 }) property-modifiers:(属性修饰符:)
- property-modifier(属性修饰符)
property-modifiers property-modifier(属性修饰符 属性修饰符) property-modifier:(属性修饰符:) - new
public
protected
internal
private
static
virtual
sealed
override
abstract
extern member-name:(成员名:) - identifier(标识符)
interface-type . identifier(接口类型 . 标识符) accessor-declarations:(访问器声明:) - get-accessor-declaration set-accessor-declarationopt(get 访问器声明 set 访问器声明可选)
set-accessor-declaration get-accessor-declarationopt(set 访问器声明 get 访问器声明可选) get-accessor-declaration:(get 访问器声明:) - attributesopt get accessor-body(属性可选 get 访问器体) set-accessor-declaration:(set 访问器声明:)
- attributesopt set accessor-body(属性可选 set 访问器体) accessor-body:(访问器体:)
- block(块)
; event-declaration:(事件声明:) - attributesopt event-modifiersopt event type variable-declarators ;(属性可选 事件修饰符可选 event 类型 变量声明符 ;)
attributesopt event-modifiersopt event type member-name { event-accessor-declarations }(属性可选 事件修饰符可选 event 类型 成员名 { 事件访问器声明 }) event-modifiers:(事件修饰符:) - event-modifier(事件修饰符)
event-modifiers event-modifier(事件修饰符 事件修饰符) event-modifier:(事件修饰符:) - new
public
protected
internal
private
static
virtual
sealed
override
abstract
extern event-accessor-declarations:(事件访问器声明:) - add-accessor-declaration remove-accessor-declaration(添加访问器声明 移除访问器声明)
remove-accessor-declaration add-accessor-declaration(移除访问器声明 添加访问器声明) add-accessor-declaration:(添加访问器声明:) - attributesopt add block(属性可选 add 块) remove-accessor-declaration:(移除访问器声明:)
- attributesopt remove block(属性可选 remove 块) indexer-declaration:(索引器声明:)
- attributesopt indexer-modifiersopt indexer-declarator { accessor-declarations }(属性可选 索引器修饰符可选 索引器声明符 { 访问器声明 }) indexer-modifiers:(索引器修饰符:)
- indexer-modifier(索引器修饰符)
indexer-modifiers indexer-modifier(索引器修饰符 索引器修饰符) indexer-modifier:(索引器修饰符:) - new
public
protected
internal
private
virtual
sealed
override
abstract
extern indexer-declarator:(索引器声明符:) - type this [ formal-parameter-list ](类型 this [ 形参表 ])
type interface-type . this [ formal-parameter-list ](类型 接口类型 . this [ 形参表 ]) operator-declaration:(运算符声明:) - attributesopt operator-modifiers operator-declarator operator-body(属性可选 运算符修饰符 运算符声明符 运算符体) operator-modifiers:(运算符修饰符:)
- operator-modifier(运算符修饰符)
operator-modifiers operator-modifier(运算符修饰符 运算符修饰符) operator-modifier:(运算符修饰符:) - public
static
extern operator-declarator:(运算符声明符:) - unary-operator-declarator(一元运算符声明符)
binary-operator-declarator(二元运算符声明符)
conversion-operator-declarator(转换运算符声明符) unary-operator-declarator:(一元运算符声明符:) - type operator overloadable-unary-operator ( type identifier )(类型 operator 可重载的一元运算符 ( 类型 标识符 )) overloadable-unary-operator: one of(可重载的一元运算符:下列之一)
- + - ! ~ ++ -- true false binary-operator-declarator:(二元运算符声明符:)
- type operator overloadable-binary-operator ( type identifier , type identifier )(类型 operator 可重载的二元运算符 ( 类型 标识符 , 类型 标识符 )) overloadable-binary-operator: one of(可重载的二元运算符:下列之一)
- + - * / % & | ^ << >> == != > < >= <= conversion-operator-declarator:(转换运算符声明符:)
- implicit operator type ( type identifier )(implicit operator 类型 ( 类型 标识符 ))
explicit operator type ( type identifier )(explicit operator 类型 ( 类型 标识符 )) operator-body:(运算符体:) - block(块)
; constructor-declaration:(构造函数声明:) - attributesopt constructor-modifiersopt constructor-declarator constructor-body(属性可选 构造函数修饰符可选 构造函数声明符 构造函数体) constructor-modifiers:(构造函数修饰符:)
- constructor-modifier(构造函数修饰符)
constructor-modifiers constructor-modifier(构造函数修饰符 构造函数修饰符) constructor-modifier:(构造函数修饰符:) - public
protected
internal
private
extern constructor-declarator:(构造函数声明符:) - identifier ( formal-parameter-listopt ) constructor-initializeropt(标识符 ( 形参表可选 ) 构造函数初始值设定项可选) constructor-initializer:(构造函数初始值设定项:)
- : base ( argument-listopt )(: base ( 参数列表可选 ))
: this ( argument-listopt )(: this ( 参数列表可选 )) constructor-body:(构造函数体:) - block(块)
; static-constructor-declaration:(静态构造函数声明:) - attributesopt static-constructor-modifiers identifier ( ) static-constructor-body(属性可选 静态构造函数修饰符 标识符 ( ) 静态构造函数体) static-constructor-modifiers:(静态构造函数修饰符:)
- externopt static(extern可选 static)
static externopt(static extern可选) static-constructor-body:(静态构造函数体:) - block(块)
; destructor-declaration:(析构函数声明:) - attributesopt externopt ~ identifier ( ) destructor-body(属性可选 extern可选 ~ 标识符 ( ) 析构函数体) destructor-body:(析构函数体:)
- block(块)
;
C.2.8 结构
- struct-declaration:(结构声明:)
- attributesopt struct-modifiersopt struct identifier struct-interfacesopt struct-body ;opt(属性可选 结构修饰符可选 struct 标识符 结构接口可选 结构体 ;可选) struct-modifiers:(结构修饰符:)
- struct-modifier(结构修饰符)
struct-modifiers struct-modifier(结构修饰符 结构修饰符) struct-modifier:(结构修饰符:) - new
public
protected
internal
private struct-interfaces:(结构接口:) - : interface-type-list(: 接口类型列表) struct-body:(结构体:)
- { struct-member-declarationsopt }({ 结构成员声明可选 }) struct-member-declarations:(结构成员声明:)
- struct-member-declaration(结构成员声明)
struct-member-declarations struct-member-declaration(结构成员声明 结构成员声明) struct-member-declaration:(结构成员声明:) - constant-declaration(常数声明)
field-declaration(字段声明)
method-declaration(方法声明)
property-declaration(属性声明)
event-declaration(事件声明)
indexer-declaration(索引器声明)
operator-declaration(运算符声明)
constructor-declaration(构造函数声明)
static-constructor-declaration(静态构造函数声明)
type-declaration(类型声明)
C.2.9 数组
- array-type:(数组类型:)
- non-array-type rank-specifiers(非数组类型 秩说明符) non-array-type:(非数组类型:)
- type(类型) rank-specifiers:(秩说明符:)
- rank-specifier(秩说明符)
rank-specifiers rank-specifier(秩说明符 秩说明符) rank-specifier:(秩说明符:) - [ dim-separatorsopt ]([ 维度分隔符可选 ]) dim-separators:(维度分隔符:)
- ,
dim-separators ,(维度分隔符 ,) array-initializer:(数组初始值设定项:) - { variable-initializer-listopt }({ 变量初始值设定项列表可选 })
{ variable-initializer-list , }({ 变量初始值设定项列表 , }) variable-initializer-list:(变量初始值设定项列表:) - variable-initializer(变量初始值设定项)
variable-initializer-list , variable-initializer(变量初始值设定项列表 , 变量初始值设定项) variable-initializer:(变量初始值设定项:) - expression(表达式)
array-initializer(数组初始值设定项)
C.2.10 接口
- interface-declaration:(接口声明:)
- attributesopt interface-modifiersopt interface identifier interface-baseopt interface-body ;opt(属性可选 接口修饰符可选 interface 标识符 接口基可选 接口体 ;可选) interface-modifiers:(接口修饰符:)
- interface-modifier(接口修饰符)
interface-modifiers interface-modifier(接口修饰符 接口修饰符) interface-modifier:(接口修饰符:) - new
public
protected
internal
private interface-base:(接口基:) - : interface-type-list(: 接口类型列表) interface-body:(接口体:)
- { interface-member-declarationsopt }({ 接口成员声明可选 }) interface-member-declarations:(接口成员声明:)
- interface-member-declaration(接口成员声明)
interface-member-declarations interface-member-declaration(接口成员声明 接口成员声明) interface-member-declaration:(接口成员声明:) - interface-method-declaration(接口方法声明)
interface-property-declaration(接口属性声明)
interface-event-declaration(接口事件声明)
interface-indexer-declaration(接口索引器声明) interface-method-declaration:(接口方法声明:) - attributesopt newopt return-type identifier ( formal-parameter-listopt ) ;(属性可选 new可选 返回类型 标识符 ( 形参表可选 ) ;) interface-property-declaration:(接口属性声明:)
- attributesopt newopt type identifier { interface-accessors }(属性可选 new可选 类型 标识符 { 接口访问器 }) interface-accessors:(接口访问器:)
- attributesopt get ;(属性可选 get ;)
attributesopt set ;(属性可选 set ;)
attributesopt get ; attributesopt set ;(属性可选 get ; 属性可选 set ;)
attributesopt set ; attributesopt get ;(属性可选 set ; 属性可选 get ;) interface-event-declaration:(接口事件声明:) - attributesopt newopt event type identifier ;(属性可选 new可选 event 类型 标识符 ;) interface-indexer-declaration:(接口索引器声明:)
- attributesopt newopt type this [ formal-parameter-list ] { interface-accessors }(属性可选 new可选 类型 this [ 形参表 ] { 接口访问器 })
C.2.11 枚举
- enum-declaration:(枚举声明:)
- attributesopt enum-modifiersopt enum identifier enum-baseopt enum-body ;opt(属性可选 枚举修饰符可选 enum 标识符 枚举基可选 枚举体 ;可选) enum-base:(枚举基:)
- : integral-type(: 整型) enum-body:(枚举体:)
- { enum-member-declarationsopt }({ 枚举成员声明可选 })
{ enum-member-declarations , }({ 枚举成员声明 , }) enum-modifiers:(枚举修饰符:) - enum-modifier(枚举修饰符)
enum-modifiers enum-modifier(枚举修饰符 枚举修饰符) enum-modifier:(枚举修饰符:) - new
public
protected
internal
private enum-member-declarations:(枚举成员声明:) - enum-member-declaration(枚举成员声明)
enum-member-declarations , enum-member-declaration(枚举成员声明 , 枚举成员声明) enum-member-declaration:(枚举成员声明:) - attributesopt identifier(属性可选 标识符)
attributesopt identifier = constant-expression(属性可选 标识符 = 常数表达式)
C.2.12 委托
- delegate-declaration:(委托声明:)
- attributesopt delegate-modifiersopt delegate return-type identifier ( formal-parameter-listopt ) ;(属性可选 委托修饰符可选 delegate 返回类型 标识符 ( 形参表可选 ) ;) delegate-modifiers:(委托修饰符:)
- delegate-modifier(委托修饰符)
delegate-modifiers delegate-modifier(委托修饰符 委托修饰符) delegate-modifier:(委托修饰符:) - new
public
protected
internal
private
C.2.13 属性
- global-attributes:(全局属性:)
- global-attribute-sections(全局属性节) global-attribute-sections:(全局属性节:)
- global-attribute-section(全局属性节)
global-attribute-sections global-attribute-section(全局属性节全局属性节) global-attribute-section:(全局属性节:) - [ global-attribute-target-specifier attribute-list ]([ 全局属性目标说明符 属性列表 ])
[ global-attribute-target-specifier attribute-list ,]([ 全局属性目标说明符 属性列表 ,]) global-attribute-target-specifier:(全局属性目标说明符:) - global-attribute-target :(全局属性目标 :) global-attribute-target:(全局属性目标:)
- assembly(程序集)
module(模块) attributes:(属性:) - attribute-sections(属性节) attribute-sections:(属性节:)
- attribute-section(属性节)
attribute-sections attribute-section(属性节 属性节) attribute-section:(属性节:) - [ attribute-target-specifieropt attribute-list ]([ 属性目标说明符可选 属性列表 ])
[ attribute-target-specifieropt attribute-list , ]([ 属性目标说明符可选 属性列表 , ]) attribute-target-specifier:(属性目标说明符:) - attribute-target :(属性目标 :) attribute-target:(属性目标:)
- field(字段)
event(事件)
method(方法)
param(参数)
property(属性)
return(返回)
type(类型) attribute-list:(属性列表:) - attribute(属性)
attribute-list , attribute(属性列表 , 属性) attribute:(属性:) - attribute-name attribute-argumentsopt(属性名 属性参数可选) attribute-name:(属性名:)
- type-name(类型名) attribute-arguments:(属性参数:)
- ( positional-argument-listopt )(( 定位参数列表可选 ))
( positional-argument-list , named-argument-list )(( 定位参数列表 , 命名参数列表 ))
( named-argument-list )(( 命名参数列表 )) positional-argument-list:(定位参数列表:) - positional-argument(定位参数)
positional-argument-list , positional-argument(定位参数列表 , 定位参数) positional-argument:(定位参数:) - attribute-argument-expression(属性参数表达式) named-argument-list:(命名参数列表:)
- named-argument(命名参数)
named-argument-list , named-argument(命名参数列表 , 命名参数) named-argument:(命名参数:) - identifier = attribute-argument-expression(标识符 = 属性参数表达式) attribute-argument-expression:(属性参数表达式:)
- expression(表达式)
C.3 不安全代码的语法扩展
- class-modifier:(类修饰符:)
- ...
unsafe struct-modifier:(结构修饰符:) - ...
unsafe interface-modifier:(接口修饰符:) - ...
unsafe delegate-modifier:(委托修饰符:) - ...
unsafe field-modifier:(字段修饰符:) - ...
unsafe method-modifier:(方法修饰符:) - ...
unsafe property-modifier:(属性修饰符:) - ...
unsafe event-modifier:(事件修饰符:) - ...
unsafe indexer-modifier:(索引器修饰符:) - ...
unsafe operator-modifier:(运算符修饰符:) - ...
unsafe constructor-modifier:(构造函数修饰符:) - ...
unsafe destructor-declaration:(析构函数声明:) - attributesopt externopt unsafeopt ~ identifier ( ) destructor-body(属性可选 extern可选 unsafe可选 ~ 标识符 ( ) 析构函数体)
attributesopt unsafeopt externopt ~ identifier ( ) destructor-body(属性可选 unsafe可选 extern可选 ~ 标识符 ( ) 析构函数体) static-constructor-modifiers:(静态构造函数修饰符:) - externopt unsafeopt static(extern可选 unsafe可选 静态)
unsafeopt externopt static(unsafe可选 extern可选 静态)
externopt static unsafeopt(extern可选 静态 unsafe可选)
unsafeopt static externopt(unsafe可选 静态 extern可选)
static externopt unsafeopt(静态 extern可选 unsafe可选)
static unsafeopt externopt(静态 unsafe可选 extern可选) embedded-statement:(嵌入语句:) - ...
unsafe-statement(不安全语句) unsafe-statement:(不安全语句:) - unsafe block(unsafe 块) type:(类型:)
- value-type(值类型)
reference-type(引用类型)
pointer-type(指针类型) pointer-type:(指针类型:) - unmanaged-type *(非托管类型 *)
void *(void *) unmanaged-type:(非托管类型:) - type(类型) primary-no-array-creation-expression:(非数组创建基本表达式:)
- ...
pointer-member-access(指针成员访问)
pointer-element-access(指针元素访问)
sizeof-expression(sizeof 表达式) unary-expression:(一元表达式:) - ...
pointer-indirection-expression(指针间接寻址表达式)
addressof-expression(addressof 表达式) pointer-indirection-expression:(指针间接寻址表达式:) - * unary-expression(* 一元表达式) pointer-member-access:(指针成员访问:)
- primary-expression -> identifier(基本表达式 -> 标识符) pointer-element-access:(指针元素访问:)
- primary-no-array-creation-expression [ expression ](非数组创建基本表达式 [ 表达式 ]) addressof-expression:(addressof 表达式:)
- & unary-expression(& 一元表达式) sizeof-expression:(sizeof 表达式:)
- sizeof ( unmanaged-type )(sizeof ( 非托管类型 )) embedded-statement:(嵌入语句:)
- ...
fixed-statement(固定语句) fixed-statement:(固定语句:) - fixed ( pointer-type fixed-pointer-declarators ) embedded-statement(fixed ( 指针类型 固定指针声明符 ) 嵌入语句) fixed-pointer-declarators:(固定指针声明符:)
- fixed-pointer-declarator(固定指针声明符)
fixed-pointer-declarators , fixed-pointer-declarator(固定指针声明符 , 固定指针声明符) fixed-pointer-declarator:(固定指针声明符:) - identifier = fixed-pointer-initializer(标识符 = 固定指针初始值设定项) fixed-pointer-initializer:(固定指针初始值设定项:)
- & variable-reference(& 变量引用)
expression(表达式) variable-initializer:(变量初始值设定项:) - expression(表达式)
array-initializer(数组初始值设置项)
stackalloc-initializer(stackalloc 初始值设置项) stackalloc-initializer:(stackalloc 初始值设定项:) - stackalloc unmanaged-type [ expression ](stackalloc 非托管类型 [ 表达式 ])