Operatory uporządkowane względem priorytetu:
| ( ) | grupowanie, np. (x+y) lub wywołania metody, np. f( ) |
| . -> | operatory dostępu do składowych (klasy lub struktury). |
| [ ] | operator indeksowania (np. tablicy). |
| ++ -- | operatory post-inkrementacji i -dekrementacji. Operatory pre-inkrementacji i dekrementacji mają trochę niższe priorytety. |
| new | pozwala na wywołanie konstruktora i dynamiczne alokowanie nowego obiektu w pamięci. Zwraca referencję do utworzonego obiektu, np. MyClass a = new MyClass( ) ; |
| typeof | zwraca typ obiektu, np. System.Type t = typeof( MyClass ); |
| ! ~ | negacja logicza ( ! ) lub bitowa ( ~ ). |
| * | operator de-referencji (zwraca wartość zapisaną w miejscu o podanym adresie). |
| & | operator pobrania adresu (razem z operatorem * jest stosowany przy wskaźnikach). |
| ( ) | operator rzutowania typu, np. (typ) wartość |
| * / % | operatory mnożenia, dzielenia oraz reszty z dzielenia (%). |
| + - | operatory dodawania i odejmowania. |
| >> << | przesunięcie bitowe w prawo lub w lewo. |
| > < >= <= | operatory relacji (większości, mniejszości, ... , mniejsze lub równe). |
| is | operator zgodności typów. Np. if( x is int) { ... } |
| as | : pozwala rzutować w dół hierarchii klas. Przy niepowodzeniu zwraca null. |
| == != | operatory równości i nierówności |
| | & ^ | operatory logiczne bitowe. |
| || && | operatory logicznej alternatywy ( || ) oraz koniunkcji ( && ). |
| ?: | trójargumentowy operator warunku. ( warunek ? a : b ) zwróci a gdy warunek ma wartość true lub b gdy warunek ma wartość false. |
| = *= | operatory przypisania. Działanie (a *= b) jest równoważne ( a = a * b ). Podobnie działają inne operatory przypisania: /= += -= %= &= ... |
Gdy operatory mają ten sam priorytet (np. + oraz - ) o ich kolejności decyduje
łączność. Operatory przypisań oraz jednoargumentowe łączą od prawej strony,
natomiast operatory dwuargumentowe (z wyjątkiem przypisań) łączą od lewej, np.
a = b = c jest równoważne: a = (b = c)
a + b + c jest równoważne: (a + b) + c
Ponadto istnieją operatory checked i unchecked służące do sprawdzania
przepełnienia, np. int a = checked( b * c ) ; gdzie b oraz c
są typu int
Operator checked oblicza wyrażenie podczas działania programu i
jeśli jego wartość wychodzi poza dopuszczalny zbiór wartości zwraca wyjątek
OverflowException (domyślnie poprawność jest sprawdzana tylko w momencie
kompilacji). Operatora checked można używać także w stosunku do całego bloku
instrukcji, np. checked { ... ; a = b * c ; ... } .
Operator unchecked wyłącza natomiast sprawdzanie wyrażeń arytmetycznych
podczas kompilacji (przydaje się bardzo rzadko)