This is a table of the operators available in the C# programming language.
| Operators (Ordered by Precedence) | |||||
|---|---|---|---|---|---|
| Symbol | Description | Example | Arity | Associativity | Overloadable |
| Primary Operators | |||||
| . | Member Access | qObj.Member | Binary | Left | No |
| ?. | Null Conditional Member Access | qObj?.Member | Binary | Left | No |
| ?[] | Null Conditional Index Access | a?[i] | Binary | Left | No |
| () | Function Invocation | f() | Unary | Left | No |
| [] | Array Indexer | a[i] | Binary | Left | Yes |
| ++ | Postfix Increment | i++ | Unary | Left | Yes |
| -- | Postfix Decrement | i-- | Unary | Left | Yes |
| new | Allocation | new T() | Unary | Left | No |
| typeof | Get the Type for a type | typeof(T) | Unary | Left | No |
| checked | Check integer calculations for overflow | checked(i+j) | Unary | Left | No |
| unchecked | Disable check for overflow | unchecked{...} | Unary | Left | No |
| default | Get the default value for a type | default(T) | Unary | Left | No |
| delegate | Create a handler for an event | delegate(...){...} | Unary | Left | No |
| sizeof | Size of an unmanaged type in bytes | sizeof(T) | Unary | Right | No |
| -> | Pointer Dereference | qpObj->Member | Binary | Left | No |
| Unary Operators | |||||
| + | Positive | +X | Unary | Right | Yes |
| - | Negation | -X | Unary | Right | Yes |
| ! | Logical Not | !P | Unary | Right | Yes |
| ~ | Bitwise Complement | ~B | Unary | Right | Yes |
| ++ | Prefix Increment | ++i | Unary | Right | Yes |
| -- | Prefix Decrement | --i | Unary | Right | Yes |
| () | Type Cast | (T)qObj | Unary | Right | No |
| await | Wait for a task | await f() | Unary | Right | No |
| & | Address of | &qObj | Unary | Right | No |
| * | Dereference | *qpObj | Unary | Right | No |
| Arithmetic Operators | |||||
| * | Multiplication | X*Y | Binary | Left | Yes |
| / | Division | X/Y | Binary | Left | Yes |
| % | Modulus | X%Y | Binary | Left | Yes |
| + | Addition | X+Y | Binary | Left | Yes |
| - | Subtraction | X-Y | Binary | Left | Yes |
| Bitwise-Shift Operators | |||||
| << | Shift Left (zero fill) | i << b | Binary | Left | Yes |
| >> | Shift Right (sign fill signed types) | i >> b | Binary | Left | Yes |
| Relational Operators and Type Testing | |||||
| < | Less Than | X < Y | Binary | Left | Yes |
| > | Greater Than | X > Y | Binary | Left | Yes |
| <= | Less Than Equal | X <= Y | Binary | Left | Yes |
| >= | Greater Than Equal | X >= Y | Binary | Left | Yes |
| is | Type Check | qObj is T | Unary | Left | No |
| as | Type Conversion | qObj as T | Unary | Left | No |
| Equality Operators | |||||
| == | Is Equal to | X == Y | Binary | Left | Yes |
| != | Is Not Equal to | X != Y | Binary | Left | Yes |
| Bitwise Logical Operators | |||||
| & | Bitwise Logical And | B1 & B2 | Binary | Left | Yes |
| ^ | Bitwise Logical Xor | B1 ^ B2 | Binary | Left | Yes |
| | | Bitwise Logical Or | B1 | B2 | Binary | Left | Yes |
| Logical Operators | |||||
| && | Logical And | P && Q | Binary | Left | No |
| || | Logical Or | P || Q | Binary | Left | No |
| Null-Coalesing Operator | |||||
| ?? | Returns the first object if it is not null; otherwise, the second | qObj1 ?? qObj2 | Binary | Left | No |
| Conditional Operator | |||||
| ?: | Returns x if P is true and Y if P is false | P ? X : Y | Ternary | Right | No |
| Assignment and Lambda Operators | |||||
| = | Assignment | X = Y | Binary | Right | No |
| += | Assignment + | X += Y | Binary | Right | No |
| -= | Assignment - | X -= Y | Binary | Right | No |
| *= | Assignment * | X *= Y | Binary | Right | No |
| /= | Assignment / | X /= Y | Binary | Right | No |
| %= | Assignment % | X %= Y | Binary | Right | No |
| &= | Assignment & | X &= Y | Binary | Right | No |
| |= | Assignment | | X |= Y | Binary | Right | No |
| ^= | Assignment ^ | X ^= Y | Binary | Right | No |
| <<= | Assignment << | X <<= b | Binary | Right | No |
| >>= | Assignment >> | X >>= b | Binary | Right | No |
| => | Lambda Operator | X => Y | Binary | Left | No |
© 20072025 XoaX.net LLC. All rights reserved.