Sdílet prostřednictvím


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

zkontrolováno(x)

Vyhodnocení výrazu ve zkontrolovaném kontextu

nezkontrolováno(x)

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#)

Koncepty

Průvodce programováním v C#