Operators:
*Operator Precedence
All operators have a particular “precedence” depending on which group the operator falls in (operators of the same group have equal precedence). Meaning some operators will be applied before others. What follows is a list of groups (containing their respective operators) ordered by precedence (highest first):
a.b - Member access.
a?.b - Null conditional member access.
-> - Pointer dereferencing combined with member access.
f(x) - Function invocation.
a - Indexer.
a? - Null conditional indexer.
x++ - Postfix increment.
x-- - Postfix decrement.
new - Type instantiation.
default(T) - Returns the default initialized value of type T.
typeof - Returns the Type object of the operand.
checked - Enables numeric overflow checking.
unchecked - Disables numeric overflow checking.
delegate - Declares and returns a delegate instance.
sizeof - Returns the size in bytes of the type operand.
+x - Returns x.
-x - Numeric negation.
!x - Logical negation.
~x - Bitwise complement/declares destructors.
++x - Prefix increment.
--x - Prefix decrement.
(T)x - Type casting.
await - Awaits a Task.
&x - Returns the address (pointer) of x.
*x - Pointer dereferencing.
x * y - Multiplication.
x / y - Division.
x % y - Modulus.
x + y - Addition.
x – y - Subtraction.
x << y - Shift bits left.
x >> y - Shift bits right.
x < y - Less than.
x > y - Greater than.
x <= y - Less than or equal to.
x >= y - Greater than or equal to.
is - Type compatibility.
as - Type conversion.
x == y - Equality.
x != y - Not equal.
x & y - Logical/bitwise AND.
x ^ y - Logical/bitwise XOR.
x | y - Logical/bitwise OR.
x && y - Short-circuiting logical AND.
x || y - Short-circuiting logical OR.
x ?? y - Returns x if it is not null; otherwise, returns y.
x ? y : z - Evaluates/returns y if x is true; otherwise, evaluates z.