8. Operatori

C# ima popriličan broj operatora koji su preuzeti iz C-a, C++-a i Jave.

Tablica dolje prikazuje listu standardnih operatora.Primjetite da je prilikom pisanja klasa moguće promijeniti defaultno djelovanje nekih operatora (preopteretiti operatore). Sljedeća tablica prikazuje i koji se operatori mogu preopteretiti.

Kategorija		Naziv			Primjer sintakse		Preopterećenje?
Primarni operatori   
			Grupiranje		(a+b)					Ne
			Član			A.B					Ne
 
Dohvaćanje elementa  
			strukture		A->B					Ne
			Poziv metode		f(x)					Ne
			Povećavanje na kraju	c++					Da
			Smanjivanje na kraju	c--					Da
			Konstruktorski poziv	c = new Coord();			Ne
			Alokacija stoga polja	int* c = stackalloc int[10]		Ne
			Veličina tipa		sizeof (int)				Ne
			Operator checked()	checked {byte c = (byte) d;}		Ne
			Operator unchecked()	unchecked {byte c = (byte) d;}		Ne
 
Unarni operatori       
			Operator plus		+10					Da
			Operator minus		-10					Da
			Logička negacija	!(c==d)					Da
			Bitovne komplementacije	~(int x)				Da
			Povećavanje na početku	++c					Da
			Smanjivanje na početku	--c					Da
			Cast tip		(tip_cast)c				Ne
			Vrijednost na adresi	int* c = d;				Ne
			Adresa vrijednosti	int* c = &d;				Ne
 
Operatori tipa          
			Jednakost tipa / 
			Podudarnost		a is String			Ne
			Dohvaćanje tipa		typeof (int)			Ne
 
Aritmetički op.  
			Množenje		c*d				Da
			Dijeljenje		c/d				Da
			Ostatak			c%d				Da
			Zbrajanja		c+d				Da
			Oduzimanja		c-d				Da
			Pomak udesno		c>>3				Da
			Pomak ulijevo		c<<3				Da
 
Relacijski i logički op.
			Manje od		c<d				Da
			Veće od			c>d				Da
			Manje ili jednako	c<=d				Da
			Veće ili jednako	c>=d				Da
			Jednakost		c==d				Da
			Ne jednakost		c!=d				Da
			Bitovni operator AND	c&d				Da
			Bitovni inkluzivni OR	c|d				Da
			Logički i		c&&d				Ne
			Logički ili		c||d				Ne
			Uvjetni op.		int c=(d<10) ? 5:15		Ne

Preopterećenje operatora

Kako bi preopteretili operator u klasi, možemo korisititi ključnu riječ operatora. Na primjer, sljedeći kod preopterećuje operator jednakosti (pogledaj lekciju 13 za detalje o ovoj metodi).

public static bool operator == (vrijednost a, vrijednost b)
{return a.Int == b.Int}

Gdje je operator jedan od logičkih, oba operatora bi trebali biti preopterećani kao i samo jedan. Ti parovi su sljedeći:

== and !=
< and >
<= and >=