Sdílet prostřednictvím


Operátory (Příručka programování C#)

V jazyce C# operátor je program prvek, který je použit na jeden nebo více operandy v výrazu nebo příkazu.Operátory, které s jedním operandem, jako je například operátor přírůstek (++) nebo new, jsou označovány jako Unární operátory.Operátory, které vezmou dva operandy, jako je například aritmetické operátory (+,-,*,/), jsou označovány jako binární operátory.Jeden operátor, podmíněné operátor (?:), má tři operandy a je jediným Ternární operátor v jazyce C#.

Následující příkaz C# obsahuje jediný Unární operátor a jediný operand.Operátor přírůstek ++, upraví hodnoty operand y.

y++;

Následující příkaz C# obsahuje dva binární operátory, každý má dva operandy.Operátor přiřazení =, má celočíselnou proměnnou y a 2 + 3 jako operandy.Výraz 2 + 3 sám se skládá z přidání operátor a dva operandy 2 a 3.

y = 2 + 3;

Operátory, hodnocení a priority operátorů

Operandem může být platný výraz libovolné velikosti a může být tvořen libovolný počet dalších výrazů.Ve výrazu, který obsahuje více operátorů je určena pořadí, ve kterém jsou operátory použity přednost, asociativitua závorky.

Každý provozovatel má definovanou přednost.Přednost před operátory ve výrazu obsahuje více operátorů, které mají přednost různých úrovní, určuje pořadí, ve kterém jsou operátory vyhodnoceny.Například následující příkaz přiřazuje 3 n1.

n1 = 11 - 2 * 4;

Protože má násobení přednost odčítání, množení proveden první.

V následující tabulce odděluje operátory do kategorií podle typu operace, kterou vykonávají.Kategorie jsou uvedeny v pořadí podle priority.

Primární operátory

Výraz

Description

x.y

Člen přístup

f(x)

Vyvolání metody a delegáta

a[x]

Přístupu a indexování pole

x++

POST-Increment

x--

POST-decrement

new T(...)

Vytváření objektu a delegáta

newT(...){...}

Vytvoření objektu s inicializátor.Viz téma Objekt a kolekce Inicializátory (Příručka programování C#).

new {...}

Inicializátor anonymní objektu.Viz téma Anonymní typy (Příručka programování C#).

newT[...]

Při vytváření pole.Viz téma Matice (Příručka programování C#).

typeof(T)

Získat objekt System.Type t

kontrolovat(x)

Vyhodnocení výrazu v kontextu kontrolované

Nekontrolovaná(x)

Vyhodnocení výrazu v kontextu Nekontrolovaná

Výchozí (T)

Získat výchozí hodnotu typu t

delegovat {}

Funkce Anonymous (anonymní metody)

Unární operátory

Výraz

Description

+x

Identita

-x

Negace

!x

Logická negace

~x

Bitový operátor negace

++x

Pre-Increment

--x

Pre-decrement

(T)x

Explicitně převést na typ t x

Multiplikativní operátory

Výraz

Description

*

Násobení

/

Divize

%

Zůstatek

Aditivní operátory

Výraz

Description

x + y

Přidání, zřetězení, kombinace delegáta

x - y

Odčítání odebrání delegáta

Operátory posunutí

Výraz

Description

x << y

Posunout vlevo

x >> y

Posunout doprava

Relační a zadejte operátory

Výraz

Description

x < y

Menší než

x > y

Větší než

x <= y

Menší než nebo rovno

x >= y

Větší než nebo rovno

x is T

Vrátí hodnotu true, pokud x není T, false jinak

x as T

Vrácení x zadali jako t nebo hodnotu null, pokud x není t

Operátory rovnosti

Výraz

Description

x == y

Se rovná

x != y

Není rovno

Null, podmíněné a logické operátory

Kategorie

Výraz

Description

Logické A

x & y

Celé číslo bitové a logická logické a

Logický operátor XOR

x ^ y

Bitový operátor XOR celé číslo XOR logickou logické

Logické OR

x | y

Celé číslo bitové nebo booleovské logické nebo

Podmíněné A

x && y

Vyhodnocuje y pouze v případě, že je splněna x

Podmíněné nebo

x || y

Vyhodnocuje y, pouze pokud je hodnota false x

Null coalescing

x ?? y

Pokud x není null x jinak vyhodnocen y

Podmíněné

x ?: y : z

Vyhodnocen pokud platí x y z x je-li nepravdivé

Přiřazení a operátorů anonymní

Výraz

Description

=

Přiřazení

x op = y

Přiřazení.Supports these operators: +=, -=, *=, /=, %=, &=, |=, !=, <<=, >>=

(T x) => y

Anonymní funkce (lambda výraz)

Asociativita operátorů

Jestliže dva nebo více subjekty, které mají stejnou přednost ve výrazu, budou vyhodnocována na základě asociativitu.Zleva asociativní operátory jsou vyhodnocovány v pořadí zleva doprava.Například x * y / z je vyhodnocena jako (x * y) / z.Zprava asociativní operátory jsou vyhodnocovány v pořadí zprava doleva.Operátor přiřazení je například právo asociativní.Pokud nebyly, výsledkem bude následující kód chyby.

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;

Operátory přiřazení a Ternární operátor (?:) jsou vpravo asociativní.Další binární operátory jsou ponechány asociativní.

Zda operátorů do výrazu jsou zleva asociativní nebo právo asociativní, jsou operandy každý výraz nejprve vyhodnoceny zleva doprava.Následující příklady ilustrují pořadí vyhodnocení operátorů a operandů.

Prohlášení

Pořadí vyhodnocování

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ání závorky

Můžete změnit pořadí zavedených přednost a asociativita operátorů pomocí závorek.Například 2 + 3 * 2 obvykle vyhodnotí 8, protože multiplikativní operátory přednost aditivní operátory.Však pokud napište výraz jako (2 + 3) * 2, přidání je vyhodnocena před množení a výsledkem je 10.Následující příklady ilustrují pořadí vyhodnocování ve výrazech v závorce.Jako v předchozích příkladech jsou vyhodnocovány operandy před použitím operátor.

Prohlášení

Pořadí vyhodnocování

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, -, *, =

Operátor přetížení

Můžete změnit chování operátory pro vlastní třídy a struktur.Tento proces se nazývá přetížení operátor.Další informace naleznete v tématu Přetěžovatelný operátory (Příručka programování C#).

Související oddíly

Další informace naleznete v tématu Operátor klíčová slova (C#-Reference) a Hospodářské subjekty C#.

Viz také

Referenční dokumentace

Příkazy, výrazy a operátory (Příručka programování C#)

Koncepty

Příručka programování C#