This is preliminary documentation and subject to change.
To comment on this topic, please send us email at ngwssdk@microsoft.com. Thanks!
22.10 Classes Grammar
10.1 Class declarations
- class-declaration:
- attributesopt class-modifiersopt class identifier class-baseopt class-body ;opt
10.1.1 Class modifiers
- class-modifiers:
- class-modifier
class-modifiers class-modifier
- class-modifier:
- new
public
protected
internal
private
abstract
sealed
10.1.2 Class base specification
- class-base:
- : class-type
: interface-type-list
: class-type , interface-type-list
- interface-type-list:
- interface-type
interface-type-list , interface-type
10.1.3 Class body
- class-body:
- { class-member-declarationsopt }
10.2 Class members
- 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
10.3 Constants
- constant-declaration:
- attributesopt constant-modifiersopt const type constant-declarators ;
- 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
10.4 Fields
- 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
- variable-declarators:
- variable-declarator
variable-declarators , variable-declarator
- variable-declarator:
- identifier
identifier = variable-initializer
- variable-initializer:
- expression
array-initializer
10.5 Methods
- 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
override
abstract
extern
- return-type:
- type
void
- member-name:
- identifier
interface-type . identifier
- method-body:
- block
;
10.5.1 Method parameters
- formal-parameter-list:
- formal-parameter
formal-parameter-list , formal-parameter
- formal-parameter:
- attributesopt parameter-modifieropt type identifier
- parameter-modifier:
- ref
out
params
10.6 Properties
- 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
- member-name:
- identifier
interface-type . identifier
10.6.2 Accessors
- accessor-declarations:
- get-accessor-declaration set-accessor-declarationopt
set-accessor-declaration get-accessor-declarationopt
- get-accessor-declaration:
- accessor-modifieropt get accessor-body
- set-accessor-declaration:
- accessor-modifieropt set accessor-body
- accessor-modifier:
- virtual
override
abstract
- accessor-body:
- block
;
10.7 Events
- event-declaration:
- event-field-declaration
event-property-declaration
- event-field-declaration:
- attributesopt event-modifiersopt event type variable-declarators ;
- event-property-declaration:
- attributesopt event-modifiersopt event type member-name { accessor-declarations }
- event-modifiers:
- event-modifier
event-modifiers event-modifier
- event-modifier:
- new
public
protected
internal
private
static
10.8 Indexers
- indexer-declaration:
- attributesopt indexer-modifiersopt indexer-declarator { accessor-declarations }
- indexer-modifiers:
- indexer-modifier
indexer-modifiers indexer-modifier
- indexer-modifier:
- new
public
protected
internal
private
- indexer-declarator:
- type this [ formal-index-parameter-list ]
type interface-type . this [ formal-index-parameter-list ]
- formal-index-parameter-list:
- formal-index-parameter
formal-index-parameter-list , formal-index-parameter
- formal-index-parameter:
- attributesopt type identifier
10.9 Operators
- operator-declaration:
- attributesopt operator-modifiers operator-declarator block
- operator-modifiers:
- public static
static public
- operator-declarator:
- unary-operator-declarator
binary-operator-declarator
conversion-operator-declarator
- unary-operator-declarator:
- type operator overloadable-unary-operator ( type identifier )
- overloadable-unary-operator: one of
- + - ! ~ ++ -- true false
- binary-operator-declarator:
- type operator overloadable-binary-operator ( type identifier , type identifier )
- overloadable-binary-operator: one of
- + - * / % & | ^ << >> == != > < >= <=
- conversion-operator-declarator:
- implicit operator type ( type identifier )
explicit operator type ( type identifier )
10.10 Instance constructors
- constructor-declaration:
- attributesopt constructor-modifiersopt constructor-declarator block
- constructor-modifiers:
- constructor-modifier
constructor-modifiers constructor-modifier
- constructor-modifier:
- public
protected
internal
private
- constructor-declarator:
- identifier ( formal-parameter-listopt ) constructor-initializeropt
- constructor-initializer:
- : base ( argument-listopt )
: this ( argument-listopt )
10.11 Destructors
- destructor-declaration:
- attributesopt ~ identifier ( ) block
10.12 Static constructors
- static-constructor-declaration:
- attributesopt static identifier ( ) block