Array types

An array type is written as a non-array-type followed by one or more rank-specifiers: array-type : non-array-typerank-specifiersnon-array-type : typerank-specifiers : rank-specifierrank-specifiersrank-specifierrank-specifier : [dim-separators]dim-separators : ,dim-separators,
A non-array-type is any type that is not itself an array-type.
The rank of an array type is given by the leftmost rank-specifier in the array-type: A rank-specifier indicates that the array is an array with a rank of one plus the number of "," tokens in the rank-specifier.
The element type of an array type is the type that results from deleting the leftmost rank-specifier: An array type of the form T[R] is an array with rank R and a non-array element type T. An array type of the form T[R][R1]...[RN] is an array with rank R and an element type T[R1]...[RN].
In effect, the rank-specifiers are read from left to right before the final non-array element type. [Example: The type int[][,,][,] is a single-dimensional array of three-dimensional arrays of two-dimensional arrays of int. end example]
At run-time, a value of an array type can be null or a reference to an instance of that array type.