X hits on this document

865 views

0 shares

0 downloads

0 comments

121 / 396

C# LANGUAGE SPECIFICATION

‎7.5

Primary

x.y  f(x)  a[x]  x++  x--  new

typeof  checked  unchecked

‎7.6

Unary

+  -  !  ~  ++x  --x  (T)x

‎7.7

Multiplicative

*  /  %

‎7.7

Additive

+  -

‎7.8

Shift

<<  >>

‎7.9

Relational and type testing

<  >  <=  >=  is  as

‎7.9

Equality

==  !=

‎7.10

Logical AND

&

‎7.10

Logical XOR

^

‎7.10

Logical OR

|

‎7.11

Conditional AND

&&

‎7.11

Conditional OR

||

‎7.12

Conditional

?:

‎7.13

Assignment

=  *=  /=  %=  +=  -=  <<=  >>=  &=  ^=  |=

When an operand occurs between two operators with the same precedence, the associativity of the operators controls the order in which the operations are performed:

Except for the assignment operators, all binary operators are left-associative, meaning that operations are performed from left to right. For example, x + y + z is evaluated as (x + y) + z.

The assignment operators and the conditional operator (?:) are right-associative, meaning that operations are performed from right to left. For example, x = y = z is evaluated as x = (y = z).

Precedence and associativity can be controlled using parentheses. For example, x + y * z first multiplies y by z and then adds the result to x, but (x + y) * z first adds x and y and then multiplies the result by z.

7.2.2 Operator overloading

All unary and binary operators have predefined implementations that are automatically available in any expression. In addition to the predefined implementations, user-defined implementations can be introduced by including operator declarations in classes and structs (§‎10.9). User-defined operator implementations always take precedence over predefined operator implementations: Only when no applicable user-defined operator implementations exist will the predefined operator implementations be considered, as described in §‎7.2.3 and §‎7.2.4.

The overloadable unary operators are:

+   -   !   ~   ++   --   true   false

Although true and false are not used explicitly in expressions (and therefore are not included in the precedence table in §‎7.2.1), they are considered operators because they are invoked in several expression contexts: boolean expressions (§‎7.16) and expressions involving the conditional (§‎7.12), and conditional logical operators (§‎7.11).

The overloadable binary operators are:

+   -   *   /   %   &   |   ^   <<   >>   ==   !=   >   <   >=   <=

108Copyright Microsoft Corporation 1999-2003. All Rights Reserved.

Document info
Document views865
Page views865
Page last viewedMon Dec 05 14:58:28 UTC 2016
Pages396
Paragraphs9401
Words133190

Comments