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 非托管类型 [ 表达式 ])