Primary expressions include the simplest forms of expressions.
primary-expression:
array-creation-expression
primary-no-array-creation-expression
primary-no-array-creation-expression:
literal
simple-name
parenthesized-expression
member-access
invocation-expression
element-access
this-access
base-access
post-increment-expression
post-decrement-expression
object-creation-expression
delegate-creation-expression
typeof-expression
checked-expression
unchecked-expression
Primary expressions are divided between array-creation-expressions and
primary-no-array-creationexpressions.
Treating array-creation-expression in this way, rather than listing it
along with the other simple
expression forms, enables the grammar to disallow potentially confusing
code such as
C# LANGUAGE SPECIFICATION
138
object o = new int[3][1];
which would otherwise be interpreted as
object o = (new int[3])[1];