Table of Contents 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Notes DownloadECMA-334 C# Language Specification 14 Expressions 14.5 Primary expressions 14.5.9 Postfix increment and decrement operatorspost-increment-expression : primary-expression ++ post-decrement-expression : primary-expression --
Paragraph 11 The operand of a postfix increment or decrement operation must be an expression classified as a variable, a property access, or an indexer access. 2 The result of the operation is a value of the same type as the operand.
Paragraph 21 If the operand of a postfix increment or decrement operation is a property or indexer access, the property or indexer must have both a get and a set accessor. 2 If this is not the case, a compile-time error occurs.
Paragraph 31 Unary operator overload resolution (§14.2.3) is applied to select a specific operator implementation. 2 Predefined ++ and --operators exist for the following types: sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal, and any enum type. 3 The predefined ++ operators return the value produced by adding 1 to the operand, and the predefined --operators return the value produced by subtracting 1 from the operand.
Paragraph 41 The run-time processing of a postfix increment or decrement operation of the form x++ or x--consists of the following steps:
Paragraph 51 The ++ and --operators also support prefix notation (§14.6.5). 2 The result of x++ or x--is the value of x before the operation, whereas the result of ++x or --x is the value of x after the operation. 3 In either case, x itself has the same value after the operation.
Paragraph 61 An operator ++ or operator --implementation can be invoked using either postfix or prefix notation. 2 It is not possible to have separate operator implementations for the two notations.
- 2 If x is classified as a variable:
- 3 x is evaluated to produce the variable.
- 4 The value of x is saved.
- 5 The selected operator is invoked with the saved value of x as its argument.
- 6 The value returned by the operator is stored in the location given by the evaluation of x.
- 7 The saved value of x becomes the result of the operation.
- 8 If x is classified as a property or indexer access:
- 9 The instance expression (if x is not static) and the argument list (if x is an indexer access) associated with x are evaluated, and the results are used in the subsequent get and set accessor invocations.
- 10 The get accessor of x is invoked and the returned value is saved.
- 11 The selected operator is invoked with the saved value of x as its argument.
- 12 The set accessor of x is invoked with the value returned by the operator as its value argument.
- 13 The saved value of x becomes the result of the operation.
|Jagger Software Ltd|
|Company # 4070126|
|VAT # 762 5213 42|