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 非託管類型 [ 表達式 ])