CATEGORII DOCUMENTE |
Grammar
This appendix contains summaries of the lexical and syntactic grammars found in the main document, and of the grammar extensions for unsafe code. Grammar productions appear here in the same order that they appear in the main document.
Lexical grammar
input:
input-sectionopt
input-section:
input-section-part
input-section input-section-part
input-section-part:
input-elementsopt new-line
pp-directive
input-elements:
input-element
input-elements input-element
input-element:
whitespace
comment
token
Line terminators
new-line:
Carriage
return character (U+000D)
Line
feed character (U+000A)
Carriage
return character (U+000D) followed by line feed character
(U+000A)
Line
separator character (U+2028)
Paragraph
separator character (U+2029)
White space
whitespace:
Any
character with Unicode class Zs
Horizontal tab character (U+0009)
Vertical
tab character (U+000B)
Form
feed character (U+000C)
Comments
comment:
single-line-comment
delimited-comment
single-line-comment:
// input-charactersopt
input-characters:
input-character
input-characters input-character
input-character:
Any Unicode character except a new-line-character
new-line-character:
Carriage return character (U+000D)
Line feed character (U+000A)
Line separator character (U+2028)
Paragraph separator character (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:
Any Unicode character except *
not-slash:
Any Unicode character except /
Tokens
token:
identifier
keyword
integer-literal
real-literal
character-literal
string-literal
operator-or-punctuator
Unicode character escape sequences
unicode-escape-sequence:
u hex-digit
hex-digit hex-digit hex-digit
U hex-digit
hex-digit hex-digit hex-digit
hex-digit hex-digit hex-digit
hex-digit
Identifiers
identifier:
available-identifier
@ identifier-or-keyword
available-identifier:
An identifier-or-keyword that is not a keyword
identifier-or-keyword:
identifier-start-character
identifier-part-charactersopt
identifier-start-character:
letter-character
_ (the underscore character)
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:
A Unicode character of classes Lu, Ll, Lt, Lm, Lo, or Nl
A unicode-escape-sequence representing a character of classes
Lu, Ll, Lt, Lm, Lo, or Nl
combining-character:
A Unicode character of classes Mn or Mc
A unicode-escape-sequence representing a character of classes Mn or Mc
decimal-digit-character:
A Unicode character of the class Nd
A unicode-escape-sequence representing a character of the
class Nd
connecting-character:
A Unicode character of the class Pc
A unicode-escape-sequence representing a character of the
class Pc
formatting-character:
A Unicode character of the class Cf
A unicode-escape-sequence representing a character of the
class Cf
Keywords
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
Literals
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 hex-digits
integer-type-suffixopt
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 signopt decimal-digits
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
single-character:
Any character except ' (U+0027), (U+005C), and new-line-character
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
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
single-regular-string-literal-character:
Any
character except ' (U+0022), (U+005C), and new-line-character
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:
any
character except '
quote-escape-sequence:
''
null-literal:
null
Operators and punctuators
operator-or-punctuator: one of
[ ] ( ) . , : ;
+ - * / % & | ^ ! ~
= < > ? ++ -- && || << >>
== != <= >= += -= *= /= %= &=
|= ^= <<= >>= ->
Pre-processing directives
pp-directive:
pp-declaration
pp-conditional
pp-line
pp-diagnostic
pp-region
pp-new-line:
whitespaceopt
single-line-commentopt
new-line
conditional-symbol:
Any identifier-or-keyword
except true or false
pp-expression:
whitespaceopt
pp-or-expression whitespaceopt
pp-or-expression:
pp-and-expression
pp-or-expression whitespaceopt || whitespaceopt pp-and-expression
pp-and-expression:
pp-equality-expression
pp-and-expression whitespaceopt && whitespaceopt pp-equality-expression
pp-equality-expression:
pp-unary-expression
pp-equality-expression whitespaceopt == whitespaceopt pp-unary-expression
pp-equality-expression whitespaceopt != whitespaceopt pp-unary-expression
pp-unary-expression:
pp-primary-expression
! whitespaceopt pp-unary-expression
pp-primary-expression:
true
false
conditional-symbol
( pp-expression )
pp-declaration:
whitespaceopt # whitespaceopt define whitespace
conditional-symbol pp-new-line
whitespaceopt # whitespaceopt undef whitespace
conditional-symbol pp-new-line
pp-conditional:
pp-if-section pp-elif-sectionsopt pp-else-sectionopt pp-endif
pp-if-section:
whitespaceopt # whitespaceopt if pp-expression pp-new-line
conditional-sectionopt
pp-elif-sections:
pp-elif-section
pp-elif-sections pp-elif-section
pp-elif-section:
whitespaceopt # whitespaceopt elif pp-expression pp-new-line
conditional-sectionopt
else-section:
whitespaceopt # whitespaceopt else pp-new-line
conditional-sectionopt
endif-line:
whitespaceopt # whitespaceopt endif pp-new-line
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
skipped-characters:
whitespaceopt
not-number-sign input-charactersopt
not-number-sign:
Any input-character except
#
pp-line:
whitespaceopt # whitespaceopt line whitespaceopt line-indicator pp-new-line
whitespaceopt # whitespaceopt line defaultline-indicator:
integer-literal whitepaceopt file-nameopt
file-name:
' file-name-characters '
file-name-characters:
file-name-character
file-name-characters
file-name-character
file-name-character:
Any input-character except
'
pp-diagnostic:
whitespaceopt # whitespaceopt error whitespaceopt pp-message
whitespaceopt # whitespaceopt warning whitespaceopt pp-message
pp-message:
input-charactersopt new-line
pp-region:
pp-start-region conditional-sectionopt pp-end-region
pp-start-region:
whitespaceopt # whitespaceopt region whitespaceopt pp-message
pp-end-region:
whitespaceopt # whitespaceopt endregion whitespaceopt pp-message
Syntactic grammar
Basic concepts
namespace-name:
namespace-or-type-name
type-name:
namespace-or-type-name
namespace-or-type-name:
identifier
namespace-or-type-name . identifier
Types
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
Variables
variable-reference:
expression
Expressions
argument-list:
argument
argument-list , argument
argument:
expression
ref variable-reference
out variable-reference
primary-expression:
array-creation-expression
primary-expression-no-array-creation
primary-expression-no-array-creation:
literal
simple-name
parenthesized-expression
member-access
invocation-expression
element-access
this-access
base-access
post-increment-expression
post-decrement-expression
new-expression
typeof-expression
sizeof-expression
checked-expression
unchecked-expression
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-expression-no-array-creation [ expression-list ]
expression-list:
expression
expression-list , expression
this-access:
this
base-access:
base . identifier
base [ expression-list ]
post-increment-expression:
primary-expression ++
post-decrement-expression:
primary-expression --
new-expression:
object-creation-expression
array-creation-expression
delegate-creation-expression
object-creation-expression:
new type
( argument-listopt )
array-creation-expression:
new non-array-type [ expression-list ] rank-specifiersopt array-initializeropt
new array-type
array-initializer
delegate-creation-expression:
new delegate-type ( expression
)
typeof-expression:
typeof ( type
)
typeof ( void )
checked-expression:
checked ( expression
)
unchecked-expression:
unchecked ( expression
)
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
relational-expression as type
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
Statements
statement:
labeled-statement
declaration-statement
embedded-statement
embedded-statement:
block
empty-statement
expression-statement
selection-statement
iteration-statement
jump-statement
try-statement
checked-statement
unchecked-statement
lock-statement
using-statement
block:
statement-list:
statement
statement-list statement
empty-statement:
;
labeled-statement:
identifier : statement
declaration-statement:
local-variable-declaration ;
local-constant-declaration ;
local-variable-declaration:
type variable-declarators
variable-declarators:
variable-declarator
variable-declarators , variable-declarator
variable-declarator:
identifier
identifier = variable-initializer
variable-initializer:
expression
array-initializer
local-constant-declaration:
const type constant-declarators
constant-declarators:
constant-declarator
constant-declarators , constant-declarator
constant-declarator:
identifier = constant-expression
expression-statement:
statement-expression ;
statement-expression:
invocation-expression
object-creation-expression
assignment
post-increment-expression
post-decrement-expression
pre-increment-expression
pre-decrement-expression
selection-statement:
if-statement
switch-statement
if-statement:
if ( boolean-expression ) embedded-statement
if ( boolean-expression ) embedded-statement else embedded-statement
boolean-expression:
expression
switch-statement:
switch ( expression
) switch-block
switch-block:
switch-sections:
switch-section
switch-sections switch-section
switch-section:
switch-labels statement-list
switch-labels:
switch-label
switch-labels switch-label
switch-label:
case constant-expression :
default :
iteration-statement:
while-statement
do-statement
for-statement
foreach-statement
while-statement:
while ( boolean-expression ) embedded-statement
do-statement:
do embedded-statement while ( boolean-expression ) ;
for-statement:
for ( for-initializeropt ; for-conditionopt ; for-iteratoropt ) embedded-statement
for-initializer:
local-variable-declaration
statement-expression-list
for-condition:
boolean-expression
for-iterator:
statement-expression-list
statement-expression-list:
statement-expression
statement-expression-list , statement-expression
foreach-statement:
foreach ( type
identifier in expression
) embedded-statement
jump-statement:
break-statement
continue-statement
goto-statement
return-statement
throw-statement
break-statement:
break ;
continue-statement:
continue ;
goto-statement:
goto identifier ;
goto case constant-expression ;
goto default ;
return-statement:
return expressionopt ;
throw-statement:
throw expressionopt ;
try-statement:
try block
catch-clauses
try block
finally-clause
try block
catch-clauses finally-clause
catch-clauses:
specific-catch-clauses
general-catch-clauseopt
specific-catch-clausesopt
general-catch-clause
specific-catch-clauses:
specific-catch-clause
specific-catch-clauses
specific-catch-clause
specific-catch-clause:
catch ( class-type
identifieropt ) block
general-catch-clause:
catch block
finally-clause:
finally block
checked-statement:
checked block
unchecked-statement:
unchecked block
lock-statement:
lock ( expression
) embedded-statement
using-statement:
using ( resource-acquisition ) embedded-statement
resource-acquisition:
local-variable-declaration
expression
compilation-unit:
using-directivesopt
attributesopt
namespace-member-declarationsopt
namespace-declaration:
namespace qualified-identifier namespace-body ;opt
qualified-identifier:
identifier
qualified-identifier . identifier
namespace-body:
using-directives:
using-directive
using-directives using-directive
using-directive:
using-alias-directive
using-namespace-directive
using-alias-directive:
using identifier = namespace-or-type-name ;
using-namespace-directive:
using namespace-name ;
namespace-member-declarations:
namespace-member-declaration
namespace-member-declarations
namespace-member-declaration
namespace-member-declaration:
namespace-declaration
type-declaration
type-declaration:
class-declaration
struct-declaration
interface-declaration
enum-declaration
delegate-declaration
Classes
class-declaration:
attributesopt
class-modifiersopt class identifier
class-baseopt
class-body ;opt
class-modifiers:
class-modifier
class-modifiers class-modifier
class-modifier:
new
public
protected
internal
private
abstract
sealed
class-base:
: class-type
: interface-type-list
: class-type
, interface-type-list
interface-type-list:
interface-type
interface-type-list , interface-type
class-body:
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
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
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
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
sealed
override
abstract
extern
return-type:
type
void
member-name:
identifier
interface-type . identifier
method-body:
block
;
formal-parameter-list:
fixed-parameters
fixed-parameters , parameter-array
parameter-array
fixed-parameters:
fixed-parameter
fixed-parameters , fixed-parameter
fixed-parameter:
attributesopt parameter-modifieropt type
identifier
parameter-modifier:
ref
out
parameter-array:
attributesopt params array-type
identifier
property-declaration:
attributesopt
property-modifiersopt
type member-name
property-modifiers:
property-modifier
property-modifiers property-modifier
property-modifier:
new
public
protected
internal
private
static
virtual
sealed
override
abstract
extern
member-name:
identifier
interface-type . identifier
accessor-declarations:
get-accessor-declaration
set-accessor-declarationopt
set-accessor-declaration
get-accessor-declarationopt
get-accessor-declaration:
attributesopt get accessor-body
set-accessor-declaration:
attributesopt set accessor-body
accessor-body:
block
;
event-declaration:
attributesopt
event-modifiersopt event type
variable-declarators ;
attributesopt event-modifiersopt event type
member-name
event-modifiers:
event-modifier
event-modifiers event-modifier
event-modifier:
new
public
protected
internal
private
static
virtual
sealed
override
abstract
extern
event-accessor-declarations:
add-accessor-declaration
remove-accessor-declaration
remove-accessor-declaration
add-accessor-declaration
add-accessor-declaration:
attributesopt add block
remove-accessor-declaration:
attributesopt remove block
indexer-declaration:
attributesopt
indexer-modifiersopt
indexer-declarator
indexer-modifiers:
indexer-modifier
indexer-modifiers indexer-modifier
indexer-modifier:
new
public
protected
internal
private
virtual
sealed
override
abstract
indexer-declarator:
type this [ formal-parameter-list ]
type interface-type . this [ formal-parameter-list ]
operator-declaration:
attributesopt
operator-modifiers
operator-declarator
operator-body
operator-modifiers:
operator-modifier
operator-modifiers operator-modifier
operator-modifier:
public
static
extern
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
)
constructor-declaration:
attributesopt
constructor-modifiersopt
constructor-declarator
constructor-body
constructor-modifiers:
constructor-modifier
constructor-modifiers
constructor-modifier
constructor-modifier:
public
protected
internal
private
extern
constructor-declarator:
identifier ( formal-parameter-listopt ) constructor-initializeropt
constructor-initializer:
: base ( argument-listopt )
: this ( argument-listopt )
static-constructor-declaration:
attributesopt static identifier
( ) block
destructor-declaration:
attributesopt ~ identifier
( ) block
operator-body:
block
;
Structs
struct-declaration:
attributesopt struct-modifiersopt struct identifier
struct-interfacesopt
struct-body ;opt
struct-modifiers:
struct-modifier
struct-modifiers struct-modifier
struct-modifier:
new
public
protected
internal
private
struct-interfaces:
: interface-type-list
struct-body:
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
Arrays
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-list:
variable-initializer
variable-initializer-list , variable-initializer
variable-initializer:
expression
array-initializer
Interfaces
interface-declaration:
attributesopt
interface-modifiersopt
interface
identifier interface-baseopt interface-body ;opt
interface-modifiers:
interface-modifier
interface-modifiers interface-modifier
interface-modifier:
new
public
protected
internal
private
interface-base:
: interface-type-list
interface-body:
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 ) ;
interface-property-declaration:
attributesopt newopt type
identifier
interface-accessors:
attributesopt get ;
attributesopt set ;
attributesopt get ; attributesopt set ;
attributesopt set ; attributesopt get ;
interface-event-declaration:
attributesopt newopt event type
identifier ;
interface-indexer-declaration:
attributesopt newopt type
this [ formal-parameter-list ]
Enums
enum-declaration:
attributesopt enum-modifiersopt enum identifier
enum-baseopt
enum-body ;opt
enum-base:
: integral-type
enum-body:
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
Delegates
delegate-declaration:
attributesopt
delegate-modifiersopt
delegate
return-type identifier ( formal-parameter-listopt ) ;
delegate-modifiers:
delegate-modifier
delegate-modifiers delegate-modifier
delegate-modifier:
new
public
protected
internal
private
Attributes
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:
assembly
field
event
method
module
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
Grammar extensions for unsafe code
Unsafe contexts
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 unsafeopt ~ identifier
( ) block
static-constructor-declaration:
attributesopt unsafeopt static identifier
( ) block
embedded-statement:
unsafe-statement
unsafe-statement:
unsafe block
Pointer types
type:
value-type
reference-type
pointer-type
pointer-type:
unmanaged-type *
void *
unmanaged-type:
type
Pointers in expressions
primary-expression-no-array-creation:
pointer-member-access
pointer-element-access
sizeof-expression
unary-expression:
pointer-indirection-expression
addressof-expression
Pointer indirection
pointer-indirection-expression:
* unary-expression
Pointer member access
pointer-member-access:
primary-expression -> identifier
pointer-element-access:
primary-expression-no-array-creation [ expression
]
The address-of operator
addressof-expression:
& unary-expression
The sizeof operator
sizeof-expression:
sizeof ( unmanaged-type )
embedded-statement:
fixed-statement
The fixed statement
fixed-statement:
fixed ( pointer-type fixed-pointer-declarators ) embedded-statement
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
Stack allocation
stackalloc-initializer:
stackalloc unmanaged-type [ expression
]
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1076
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved