Un operator este un simbol care indica o actiune. Operandul este valoarea asupra careia se executa operatia. Operatorii alaturi de operanzi formeaza o expresie.
Clasificarea operatorilor
Operatorii sunt impartiti 3 categorii.
Operatori unari – actioneaza asupra unui singur operand.
Operatori binari – actioneaza intre doi operanzi.
Operatori ternari – actioneaza asupra a trei operanzi. Exista doar unul de acest tip, operatorul conditional.
Operatorii aritmetici
In C#, exista urmatorii operatori aritmetici :
Operator |
Semnificatie |
+ | Adunare ( si plus unar ) |
– | Scadere ( si minus unar ) |
* | Inmultire |
/ | Impartire |
% | Impartire Modulo ( rest ) |
++ | Incrementare |
— | Decrementare |
Exemplu :
int numar = 5; int numar2 = 13; //Adunare Console.WriteLine(numar + numar2); //Scadere Console.WriteLine(numar - numar2); //Inmultire Console.WriteLine(numar * numar2); //Impartire //restul este trunchiat Console.WriteLine(numar2 / numar); //conversie la tipul double, restul nu este trunchiat Console.WriteLine((double)numar2 / numar); //Impartire modulo //returneaza restul impartirii Console.WriteLine(numar2 % numar);
Exemplu incrementare :
//incrementare, cresterea cu o unitate a valorii Console.WriteLine("INCREMENTARE PREFIXATA"); Console.WriteLine(++numar); //sau folosind expresia x = x+1 numar2 = numar2 + 1; Console.WriteLine(numar2); Console.WriteLine("INCREMENTARE POSTFIXATA"); //operatia se va efectua inainte de a calcula valoarea operandului Console.WriteLine(numar++); Console.WriteLine(numar2++);
Exemplu decrementare
//decrementare, scaderea cu o unitate a valorii Console.WriteLine("DECREMENTARE PREFIXATA"); Console.WriteLine(--numar); //sau folosind expresia x = x-1 numar2 = numar2 - 1; Console.WriteLine(numar2); Console.WriteLine("DECREMENTARE POSTFIXATA"); Console.WriteLine(numar--); Console.WriteLine(numar2--);
Operatorul "+" este folosit la concateanarea stringurilor :
Console.WriteLine("5"+"5");
Operatorii relationali
Operatorii relationali se refera la relatiile de ordine care pot exista intre doua valori. Deoarece acesti operatori produc rezultate de tip adevarat sau fals, sunt folositi des cu operatorii logici.
Operator |
Semnificatie |
== | egal cu |
!= | diferit de |
< | mai mic |
> | mai mare |
<= | mai mic sau egal |
>= | mai mare sau egal |
Exemplu
//obiecte diferite object a = 1; object b = 1; Console.WriteLine(a == b); int numar1 = 1; int numar2 = 1; Console.WriteLine(numar1 != numar2);
Operatorii logici
Pentru operatorii logici, operanzii trebuie sa fie de tipul bool, rezultatul fiind tot de acest tip.
Operator |
Semnificatie |
! | negatie logica |
&& | SI logic |
|| | SAU logic |
Intr-o expresie logica ce are in componenta operatorul &&, daca primul operand are valoare false, rezultatul va fi false, indiferent de valoarea celui de-al doilea operand, iar expresia nu va mai fi evaluata.
Exemplu:
//Operatorul && Console.WriteLine(false && false); Console.WriteLine(false && true); Console.WriteLine(true && false); Console.WriteLine(true && true);
Intr-o expresie logica ce are in componenta operatorul ||, daca primul operator are valoare true, rezultatul va fi true, indiferent de valoarea celui de-al doilea operand, iar expresia nu va mai fi evaluata.
Exemplu
//Operatorul || Console.WriteLine(true || false); Console.WriteLine(false || true); Console.WriteLine(false || false); Console.WriteLine(true || true);
Operatorul de atribuire
Operatorul de atribuire “=” se foloseste intr-o constructie de forma variabila = expresie. Dupa evaluarea expresiei, rezultatul va fi atribuit variabilei. Pentru atribuire se mai folosesc si operatorii +=, –=, *=, /=, %=.
Exemplu :
int a = 5; Console.WriteLine(a += 5); //echivalent Console.WriteLine(a = a + 5);
Operatorul conditional
Este de forma : expresie1? expresie2: expresie3 .
Daca expresie1 este adevarata, atunci va fi returnata valoarea lui expresie2. Daca expresie1 este falsa, atunci va fi returnata valoarea lui expresie3.
Exemplu :
int x = 6; int y = 10; int z = 67; //6<10 este true, returneaza valoarea lui y Console.WriteLine(x < y ? y : z);
In C# sunt foarte multi operatori iar in cazul in care o expresie nu are paranteze, operatiile se executa conform prioritatii operatorilor. Lista poate fi consultata aici.
Supraincarcarea operatorilor
Prin supraincarea operatorilor se redefineste semnificatia unui operator in contextul dat de o anumita clasa creata. Prin supraincarea unui operator, se extinde aria de utilizare a acestuia la clasa creata. Efectele operatorului pot diferi de la o clasa la alta.
Supraincarcarea operatorilor este strans legata de supraincarcarea metodelor. Desi ajuta la sporirea expresivitatii codului, supraincarcarea operatorilor poate duce si la crearea confuziilor.