ECMA-334: 12.3.3.20 General rules for expressions with embedded expressions
Microsoft .NET Framework, ASP.NET, Visual C# (CSharp, C Sharp, C-Sharp) Developer Training, Visual Studio
12.3.3.20 General rules for expressions with embedded expressions
The following rules apply to these kinds of expressions: parenthesized expressions (§14.5.3), element access
expressions (§14.5.6), base access expressions with indexing (§14.5.8), increment and decrement
expressions (§14.5.9, §14.6.5), cast expressions (§14.6.6), unary +, -, ~, * expressions, binary +, -, *, /, %,
<<, >>, <, <=, >, >=, ==, !=, is, as, &, |, ^ expressions (§14.7, §14.8, §14.9, §14.10), compound
assignment expressions (§14.14.2), checked and unchecked expressions (§14.5.12), array and delegate
creation expressions (§14.5.10).
Each of these expressions has one or more sub-expressions that are unconditionally evaluated in a fixed
order. [Example: The binary % operator evaluates the left hand side of the operator, then the right hand side.
An indexing operation evaluates the indexed expression, and then evaluates each of the index expressions, in
order from left to right. end example] For an expression expr, which has sub-expressions expr1, expr2, ...,
exprn, evaluated in that order:
- The definite assignment state of v at the beginning of expr1 is the same as the definite assignment state at the beginning of expr.
- The definite assignment state of v at the beginning of expri (i greater than one) is the same as the definite assignment state at the end of expri-1.
- The definite assignment state of v at the end of expr is the same as the definite assignment state at the end of exprn.