Operátory..
C# má mnoho operátorů převzatých z C, C++ a Javy. Programátorům zřejmě většina bude známá a na ty méně známé narazíme jinde.
Zde je k nahlédnutí seznam standardních operátorů. Při psaní třídy je možné změnit chování operátorů (přetížení operátoru), ačkoliv bychom to měli dělat, jen když to má smysl. V tabulce je ukázáno, které z operátorů je možné přetížit.
kategorie: | jméno: | ukázka syntaxe: | přetížitelný?: |
---|---|---|---|
základní | seskupení | (a+b) | N |
člen | A.B | N | |
ukazatel na člena struktury | A->B | N | |
volání metody | f(x) | N | |
následný inkrement | c++ | A | |
následný dekrement | c-- | A | |
volání konstruktoru | c = new Coord(); | N | |
alokace Array stack | int* c = stackalloc int[10] | N | |
velikost struktury | sizeof (int) | N | |
arithmetic check on (kontrola přeteční zapnuta) | checked {byte c = (byte) d;} | N | |
arithmetic check off (kontrola přeteční vypnuta) | unchecked {byte c = (byte) d;} | N | |
Unární | kladná hodnota | +10 | A |
záporná hodnota | -10 | A | |
negace | !(c==d) | A | |
bitový doplněk | ~(int x) | A | |
předcházející inkrement | ++c | A | |
předcházející dekrement | --c | A | |
přenos typu | (myType)c | N | |
hodnota adresy | int* c = d; | N | |
adresa hodnoty | int* c = &d; | N | |
typové operátory | ověření kompatibility | a is String | N |
vrací info o typu | typeof (int) | N | |
matematické | násobení | c*d | A |
dělení | c/d | a | |
modulo | c%d | A | |
sčítání | c+d | A | |
odčítání | c-d | A | |
posun bitu vpravo | c>>3 | A | |
posun bitu vlevo | c<<3 | A | |
relační a logické | menší než | c<d | A |
větší než | c>d | A | |
menší nebo rovno | c<=d | A | |
větší nebo rovno | c>=d | A | |
rovná se | c==d | A | |
nerovná se | c!=d | A | |
bitové and | c&d | A | |
bitové or | c|d | A | |
logické and (A) | c&&d | N | |
logické or (nebo) | c||d | N | |
zkrácená podmínka | int c=(d<10) ? 5:15 | N |
Přetížení operátorů
Pro přetížení operátoru ve třídě definujeme metodu se stejným názvem jako je název operátoru:
public static bool operator == (Value a, Value b)
{return a.Int == b.Int}
Pokud je operátor součástí logického páru, měly by být přetíženy oba. Takové páry jako jsou tyto:
== and != < and > <= and >=Zdroj: http://www.softsteel.co.uk/tutorials/cSharp/lesson8.html