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 DownloadECMA334 C# Language Specification 14 Expressions 14.12 Conditional operator
Paragraph 11 The ?: operator is called the conditional operator. 2 It is at times also called the ternary operator. conditionalexpression : conditionalorexpression conditionalorexpression ? expression : expression
Paragraph 21 A conditional expression of the form b ? x : y first evaluates the condition b. 2 Then, if b is true, x is evaluated and becomes the result of the operation. 3 Otherwise, y is evaluated and becomes the result of the operation. 4 A conditional expression never evaluates both x and y.
Paragraph 31 The conditional operator is rightassociative, meaning that operations are grouped from right to left. 2 For example, an expression of the form a ? b : c ? d : e is evaluated as a ? b : (c ? d : e).
Paragraph 41 The first operand of the ?: operator must be an expression of a type that can be implicitly converted to bool, or an expression of a type that implements operator true. 2 If neither of these requirements is satisfied, a compiletime error occurs.
Paragraph 51 The second and third operands of the ?: operator control the type of the conditional expression. 2 Let X and Y be the types of the second and third operands. 3 Then,  4 If X and Y are the same type, then this is the type of the conditional expression.
 5 Otherwise, if an implicit conversion (§13.1) exists from X to Y, but not from Y to X, then Y is the type of the conditional expression.
 6 Otherwise, if an implicit conversion (§13.1) exists from Y to X, but not from X to Y, then X is the type of the conditional expression.
 7 Otherwise, no expression type can be determined, and a compiletime error occurs.
Paragraph 61 The runtime processing of a conditional expression of the form b ? x : y consists of the following steps:  2 First, b is evaluated, and the bool value of b is determined:
 3 If an implicit conversion from the type of b to bool exists, then this implicit conversion is performed to produce a bool value.
 4 Otherwise, the operator true defined by the type of b is invoked to produce a bool value.
 5 If the bool value produced by the step above is true, then x is evaluated and converted to the type of the conditional expression, and this becomes the result of the conditional expression.
 6 Otherwise, y is evaluated and converted to the type of the conditional expression, and this becomes the result of the conditional expression.

Jagger Software Ltd 
Company # 4070126 
VAT # 762 5213 42 