C# 语法参考(一)

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# 语法参考(一))