În C #, ca orice limbaj de programare, există un set gata de jetoane folosit pentru a efectua operații de bază pe tipuri încorporate. De exemplu, se știe că operatorul + poate fi aplicat la două numere întregi pentru a da suma lor:
Nu este nimic nou aici, dar v-ați gândit vreodată la faptul că aceeași operație + poate fi aplicată majorității tipurilor de date C # încorporate? De exemplu, luați în considerare acest cod:
De fapt, funcționalitatea operației + se bazează în mod unic pe tipurile de date prezentate (rânduri sau numere întregi în acest caz). Atunci când operatorul + este aplicat tipurilor numerice, obținem suma aritmetică a operanților. Cu toate acestea, atunci când aceeași operație este aplicată tipurilor de șir, rezultă concatenarea șirului.
Limba C # oferă posibilitatea de a construi clase și structuri speciale care să răspundă în mod unic la același set de jetoane de bază (cum ar fi operația +). Rețineți că absolut fiecare operație C # încorporată nu poate fi supraîncărcată. Următorul tabel descrie capacitățile de suprasarcină ale operațiilor de bază:
Supraîncărcarea operatorului unar
Operatorii unari sunt supraîncărcați în același mod ca și operatorii binari. Principala diferență, desigur, este că au un singur operand. Să actualizăm exemplul anterior, adăugând la supraîncărcarea operațiilor ++, -, -:
Efectuați operațiuni cu tipurile de date C # încorporate
Pentru orice clasă și operator dat, este posibilă și supraîncărcarea metodei operatorului. Acest lucru este necesar, în special, pentru a permite operațiuni cu tip de clasă și alte tipuri de date, inclusiv cele încorporate. Să adăugăm următoarea suprasarcină la exemplul anterior:
După cum rezultă rezultatul de mai sus, atunci când operatorul + este aplicat la două obiecte din clasa MyArr, coordonatele lor sunt adăugate. Și când este aplicat unui obiect de tip MyArr și unei valori șir, se întoarce un șir cu coordonatele curente ale obiectului.