C# 语法参考(一)

    技术2022-05-11  39

    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:(布尔值:) truefalse 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 基本表达式:) truefalseconditional-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:(整型:) sbytebyteshortushortintuintlongulongchar floating-point-type:(浮点类型:) floatdouble enum-type:(枚举类型:) type-name(类型名) reference-type:(引用类型:) class-type(类类型)interface-type(接口类型)array-type(数组类型)delegate-type(委托类型) class-type:(类类型:) type-name(类型名)objectstring 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 longobject 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(表达式)  


    最新回复(0)