NGWS SDK Documentation  

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