Operátory (Průvodce programováním v C#)
V jazyce C# je operátor prvek programu, který se používá pro jeden nebo několik operandů ve výrazu nebo příkazu.Operátory, které používají jeden operand, jako je operátor inkrementace (++) nebo operátor new, se označují jako unární operátory.Operátory, které používají dva operandy, jako jsou aritmetické operátory (+,-,*,/), se označují jako binární operátory.Jeden z operátorů, podmiňovací operátor (?:), používá tři operandy a je jediným ternárním operátorem v jazyce C#.
Následující příkaz jazyka C# obsahuje jeden unární operátor a jeden operand.Operátor inkrementace ++ upravuje hodnotu operandu y.
y++;
Následující příkaz jazyka C# obsahuje dva binární operátory, z nichž každý používá dva operandy.Operátor přiřazení = používá jako operandy proměnnou celého čísla y a výraz 2 + 3.Samotný výraz 2 + 3 sestává z operátoru sčítání a dvou operandů 2 a 3.
y = 2 + 3;
Operátory, vyhodnocení a priorita operátorů
Operand může být platný výraz, který se skládá z jakékoli délky kódu a který může zahrnovat libovolný počet dílčích výrazů.Ve výrazu s větším počtem operátorů je pořadí použití operátorů stanoveno prioritou operátorů, asociativitou a závorkami.
Jednotlivé operátory mají definovanou prioritu.Ve výrazu s větším počtem operátorů, které mají odlišnou prioritu, určuje priorita operátorů pořadí, ve kterém jsou operátory vyhodnoceny.Například následující příkaz přiřazuje operandu n1 hodnotu 3.
n1 = 11 - 2 * 4;
Nejdříve je provedeno násobení, protože násobení má přednost před odčítáním.
Následující tabulka rozděluje operátory do kategorií podle typu operace, kterou provádí.Kategorie jsou uvedeny v pořadí podle priority.
Primární operátory
Výraz |
Popis |
---|---|
x.y |
Přístup ke členům |
f(x) |
Vyvolání metod a delegátů |
a[x] |
Přístup k poli a indexeru |
x++ |
Postinkrementace |
x-- |
Postdekrementace |
new T(...) |
Vytvoření objektu a delegátu |
new T(...){...} |
Vytvoření objektu s inicializátorem.Další informace naleznete v tématu Inicializátory objektu a kolekce (Průvodce programováním v C#). |
new {...} |
Inicializátor anonymních objektů.Další informace naleznete v tématu Anonymní typy (Průvodce programováním v C#). |
new T[...] |
Vytvoření pole.Další informace naleznete v tématu Pole (Průvodce programováním v C#). |
typeof(T) |
Získání objektu System.Type pro T |
Vyhodnocení výrazu ve zkontrolovaném kontextu |
|
Vyhodnocení výrazu v nezkontrolovaném kontextu |
|
výchozí (T) |
Získání výchozí hodnoty typu T |
delegát {} |
Anonymní funkce (anonymní metoda) |
Unární operátory
Výraz |
Popis |
---|---|
+x |
Identita |
-x |
Negace |
!x |
Logická negace |
~x |
Bitová negace. |
++x |
Preinkrementace |
--x |
Predekrementace |
(T)x |
Explicitní převod x na typ T |
Operátory násobení
Výraz |
Popis |
---|---|
Násobení |
|
Dělení |
|
Zbytek |
Operátory sčítání
Výraz |
Popis |
---|---|
x + y |
Sčítání, řetězení řetězců, kombinování delegátů |
x - y |
Odčítání, odebrání delegátů |
Operátory posunutí
Výraz |
Popis |
---|---|
x << y |
Posun doleva |
x >> y |
Posun doprava |
Relační operátory a operátory typu
Výraz |
Popis |
---|---|
x < y |
Menší než |
x > y |
Větší než |
x <= y |
Menší nebo rovno |
x >= y |
Větší nebo rovno |
x je T |
Vrátí hodnotu true, pokud x je T, jinak hodnotu false |
x jako T |
Vrátí x jako T, nebo hodnotu null, pokud x není T |
Operátory rovnosti
Výraz |
Popis |
---|---|
x == y |
Rovno |
x != y |
Nerovná se |
Logické, podmiňovací a nulové operátory
Kategorie |
Výraz |
Popis |
---|---|---|
Logický operátor AND |
x & y |
Bitový operátor AND celého čísla, logická hodnota operátoru AND |
Logický operátor XOR |
x ^ y |
Bitový operátor XOR celého čísla, logická hodnota operátoru XOR |
Logický operátor OR |
x | y |
Bitový operátor OR celého čísla, logická hodnota operátoru OR |
Podmiňovací operátor AND |
x & & y |
Vyhodnocuje y pouze v případě, že x má hodnotu true |
Podmiňovací operátor OR |
x || y |
Vyhodnocuje y pouze v případě, že x má hodnotu false |
Nulové sloučení |
x ?? y |
Vyhodnotí y, pokud x má hodnotu null, jinak vyhodnotí x |
Podmiňovací operátor |
x ?: y : z |
Vyhodnotí y, pokud x má hodnotu true; vyhodnotí z, pokud x má hodnotu false |
Operátory přiřazení a anonymní operátory
Výraz |
Popis |
---|---|
Přiřazení |
|
x op= y |
Složené přiřazení.Supports these operators: +=, -=, *=, /=, %=, &=, |=, !=, <<=, >>= |
(T x) => y |
Anonymní funkce (výraz lambda) |
Asociativita
Pokud výraz obsahuje dva nebo více operátorů se stejnou prioritou, jsou vyhodnocovány na základě asociativity.Operátory asociativní zleva se vyhodnocují v pořadí zleva doprava.Například operátor x * y / z je vyhodnocen jako (x * y) / z.Operátory asociativní zprava se vyhodnocují v pořadí zprava doleva.Například operátor přiřazení je asociativní zprava.Pokud by nebyl, následující kód by způsobil chybu.
int a, b, c;
c = 1;
// The following two lines are equivalent.
a = b = c;
a = (b = c);
// The following line, which forces left associativity, causes an error.
//(a = b) = c;
Další příklad Ternární operátor (?:) je doprava asociativní.Většina binární operátory jsou ponechána asociativní.
Ať už jsou operátory ve výrazu asociativní zleva nebo asociativní zprava, jsou nejdříve vyhodnocovány operandy jednotlivých výrazů, zleva doprava.Následující příklady znázorňují pořadí vyhodnocení operátorů a operandů.
Příkaz |
Pořadí vyhodnocení |
---|---|
a = b |
a, b, = |
a = b + c |
a, b, c, +, = |
a = b + c * d |
a, b, c, d, *, +, = |
a = b * c + d |
a, b, c, *, d, +, = |
a = b - c + d |
a, b, c, -, d, +, = |
a += b -= c |
a, b, c, -=, += |
Přidávání závorek
Pořadí stanovené na základě priority operátorů a asociativity můžete změnit pomocí závorek.Například operátor 2 + 3 * 2 je obvykle vyhodnocen jako 8, protože operátory násobení mají přednost před operátory sčítání.Pokud však napíšete výraz ve formátu (2 + 3) * 2, sčítání je vyhodnoceno ještě před násobením, a proto je výsledná hodnota 10.Následující příklady znázorňují pořadí vyhodnocení ve výrazech se závorkami.Stejně jako v předchozích příkladech se operandy vyhodnocují ještě před použitím operátoru.
Příkaz |
Pořadí vyhodnocení |
---|---|
a = (b + c) * d |
a, b, c, +, d, *, = |
a = b - (c + d) |
a, b, c, d, +, -, = |
a = (b + c) * (d - e) |
a, b, c, +, d, e, -, *, = |
Přetížení operátoru
Můžete změnit chování operátorů pro vlastní třídy a struktury.Tento proces se označuje jako přetížení operátoru.Další informace naleznete v tématu Přetížitelné operátory (Průvodce programováním v C#).
Související oddíly
Další informace naleznete v tématu Klíčová slova operátorů (Referenční dokumentace jazyka C#) a Operátory jazyka C#.
Viz také
Referenční dokumentace
Příkazy, výrazy a operátory (Průvodce programováním v C#)