Operátory (Průvodce programováním v C#)Operators (C# Programming Guide)

V jazyce C# operátor je element program, který se použije na jeden nebo více operandy v výraz nebo příkaz.In C#, an operator is a program element that is applied to one or more operands in an expression or statement. Operátory, které s jedním operandem, jako je například operátor přírůstku (++) nebo new, se označují jako unární operátory.Operators that take one operand, such as the increment operator (++) or new, are referred to as unary operators. Operátory, které provést dva operandy, jako je například aritmetické operátory (+,-,*,/), se označují jako binární operátory.Operators that take two operands, such as arithmetic operators (+,-,*,/), are referred to as binary operators. Jeden operátor, operátor podmíněného (?:), má tři operandy a je jedinou Ternární operátor v jazyce C#.One operator, the conditional operator (?:), takes three operands and is the sole ternary operator in C#.

Následující příkaz jazyka C# obsahuje jeden unární operátor a jeden operand.The following C# statement contains a single unary operator and a single operand. Operátor přírůstku ++, upraví hodnoty operand y.The increment operator, ++, modifies the value of the operand y.

y++;

Následující příkaz jazyka C# obsahuje dva binární operátory, z nichž každý používá dva operandy.The following C# statement contains two binary operators, each with two operands. Operátor přiřazení =, má proměnná s celým číslem y a výraz 2 + 3 jako operandy.The assignment operator, =, has the integer variable y and the expression 2 + 3 as operands. Výraz 2 + 3 samotné se skládá z operátor sčítání a dva operandy 2 a 3.The expression 2 + 3 itself consists of the addition operator and two operands, 2 and 3.

y = 2 + 3;

Operátory, vyhodnocení a priorita operátorůOperators, Evaluation, and Operator Precedence

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ů.An operand can be a valid expression that is composed of any length of code, and it can comprise any number of sub expressions. Ve výrazu, který obsahuje více operátorů, je dáno pořadí, ve kterém jsou použity operátory operátorů, asociativnosta kulaté závorky.In an expression that contains multiple operators, the order in which the operators are applied is determined by operator precedence, associativity, and parentheses.

Jednotlivé operátory mají definovanou prioritu.Each operator has a defined precedence. 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.In an expression that contains multiple operators that have different precedence levels, the precedence of the operators determines the order in which the operators are evaluated. Například následující příkaz přiřadí 3 a n1.For example, the following statement assigns 3 to n1.

n1 = 11 - 2 * 4;

Nejdříve je provedeno násobení, protože násobení má přednost před odčítáním.The multiplication is executed first because multiplication takes precedence over subtraction.

Následující tabulka rozděluje operátory do kategorií podle typu operace, kterou provádí.The following table separates the operators into categories based on the type of operation they perform. Kategorie jsou uvedeny v pořadí podle priority.The categories are listed in order of precedence.

Primární operátoryPrimary Operators

VýrazExpression PopisDescription
x.yx.y

x?. yx?.y
Přístup ke členůmMember access

Člen podmíněného přístupuConditional member access
f(x)f(x) Vyvolání metod a delegátůMethod and delegate invocation
a[x]a[x]

a?[x]a?[x]
Přístup k poli a indexeruArray and indexer access

Podmíněný přístup pole a indexeruConditional array and indexer access
x++x++ PostinkrementacePost-increment
x--x-- PostdekrementacePost-decrement
nové T(...)new T(...) Vytvoření objektu a delegátuObject and delegate creation
new T(...){...}new T(...){...} Vytvoření objektu s inicializátorem.Object creation with initializer. V tématu inicializátory objektu a kolekce.See Object and Collection Initializers.
new {...}new {...} Inicializátor anonymních objektů.Anonymous object initializer. V tématu anonymní typy.See Anonymous Types.
new T[...]new T[...] Vytvoření pole.Array creation. V tématu pole.See Arrays.
typeof(T)typeof(T) Získání objektu System.Type pro TObtain System.Type object for T
zaškrtnutí(x)checked(x) Vyhodnocení výrazu ve zkontrolovaném kontextuEvaluate expression in checked context
nezaškrtnuté(x)unchecked(x) Vyhodnocení výrazu v nezkontrolovaném kontextuEvaluate expression in unchecked context
výchozí (T)default (T) Získání výchozí hodnoty typu TObtain default value of type T
delegate {}delegate {} Anonymní funkce (anonymní metoda)Anonymous function (anonymous method)

Unární operátoryUnary Operators

VýrazExpression PopisDescription
+x+x IdentitaIdentity
-x-x NegaceNegation
!x!x Logická negaceLogical negation
~x~x Bitová negace.Bitwise negation
++x++x PreinkrementacePre-increment
--x--x PredekrementacePre-decrement
(T)x(T)x Explicitní převod x na typ TExplicitly convert x to type T

Multiplikativní operátoryMultiplicative Operators

VýrazExpression PopisDescription
* NásobeníMultiplication
/ DěleníDivision
% ZbytekRemainder

Operátory sčítáníAdditive Operators

VýrazExpression PopisDescription
x + yx + y Sčítání, řetězení řetězců, kombinování delegátůAddition, string concatenation, delegate combination
x - yx - y Odčítání, odebrání delegátůSubtraction, delegate removal

Operátory posunutíShift Operators

VýrazExpression PopisDescription
x << yx << y Posun dolevaShift left
x >> yx >> y Posun dopravaShift right

Relační a zadejte operátoryRelational and Type Operators

VýrazExpression PopisDescription
x < yx < y Menší nežLess than
x > yx > y Větší nežGreater than
x <= yx <= y Menší nebo rovnoLess than or equal
x >= yx >= y Větší nebo rovnoGreater than or equal
x je Tx is T Vrátí hodnotu true, pokud x je T, jinak hodnotu falseReturn true if x is a T, false otherwise
x jako Tx as T Vrátí x jako T, nebo hodnotu null, pokud x není TReturn x typed as T, or null if x is not a T

Operátory rovnostiEquality Operators

VýrazExpression PopisDescription
x == yx == y RovnoEqual
x ! = yx != y Nerovná seNot equal

Operátory logických, podmíněného a hodnotu Null.Logical, Conditional, and Null Operators

KategorieCategory VýrazExpression PopisDescription
Logický operátor ANDLogical AND x & yx & y Bitový operátor AND celého čísla, logická hodnota operátoru ANDInteger bitwise AND, Boolean logical AND
Logický operátor XORLogical XOR x ^ yx ^ y Bitový operátor XOR celého čísla, logická hodnota operátoru XORInteger bitwise XOR, boolean logical XOR
Logický operátor ORLogical OR x | yx | y Bitový operátor OR celého čísla, logická hodnota operátoru ORInteger bitwise OR, boolean logical OR
Podmiňovací operátor ANDConditional AND x && yx && y Vyhodnocuje y pouze v případě, že x má hodnotu trueEvaluates y only if x is true
Podmiňovací operátor ORConditional OR x || yx || y Vyhodnocuje y pouze v případě, že x má hodnotu falseEvaluates y only if x is false
Nulové sloučeníNull coalescing x ??x ?? yy Vyhodnotí y, pokud x má hodnotu null, jinak vyhodnotí xEvaluates to y if x is null, to x otherwise
Podmiňovací operátorConditional x ?x ? y : zy : z Vyhodnotí y, pokud x má hodnotu true; vyhodnotí z, pokud x má hodnotu falseEvaluates to y if x is true, z if x is false

Přiřazení a anonymní operátoryAssignment and Anonymous Operators

VýrazExpression PopisDescription
= PřiřazeníAssignment
x op= yx op= y Složené přiřazení.Compound assignment. Podporuje tyto operátory: += , -= , *= , /= , %= , &=, |=, !=, <<=, >>=Supports these operators: +=, -=, *=, /=, %=, &=, |=, !=, <<=, >>=
(T x) => y(T x) => y Anonymní funkce (výraz lambda)Anonymous function (lambda expression)

AsociativitaAssociativity

Pokud výraz obsahuje dva nebo více operátorů se stejnou prioritou, jsou vyhodnocovány na základě asociativity.When two or more operators that have the same precedence are present in an expression, they are evaluated based on associativity. Operátory asociativní zleva se vyhodnocují v pořadí zleva doprava.Left-associative operators are evaluated in order from left to right. Například x * y / z je vyhodnoceno jako (x * y) / z.For example, x * y / z is evaluated as (x * y) / z. Operátory asociativní zprava se vyhodnocují v pořadí zprava doleva.Right-associative operators are evaluated in order from right to left. Například operátor přiřazení je asociativní zprava.For example, the assignment operator is right associative. Pokud by nebyl, následující kód by způsobil chybu.If it were not, the following code would result in an error.

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 (?:) není pravé asociativní.As another example the ternary operator (?:) is right associative. Většina binární operátory nezbývají asociativní.Most binary operators are left associative.

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.Whether the operators in an expression are left associative or right associative, the operands of each expression are evaluated first, from left to right. Následující příklady znázorňují pořadí vyhodnocení operátorů a operandů.The following examples illustrate the order of evaluation of operators and operands.

PříkazStatement Pořadí vyhodnoceníOrder of evaluation
a = b a, b, =a, b, =
a = b + c 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 + d a, b, c, -, d, +, =a, b, c, -, d, +, =
a += b -= c a, b, c, -=, +=a, b, c, -=, +=

Přidávání závorekAdding Parentheses

Pořadí stanovené na základě priority operátorů a asociativity můžete změnit pomocí závorek.You can change the order imposed by operator precedence and associativity by using parentheses. Například 2 + 3 * 2 normálně se vyhodnocuje 8, protože multiplikativní operátory mají přednost před operátory sčítání.For example, 2 + 3 * 2 ordinarily evaluates to 8, because multiplicative operators take precedence over additive operators. Ale pokud napíšete výraz jako (2 + 3) * 2, je přidání vyhodnocují před násobení a výsledkem je 10.However, if you write the expression as (2 + 3) * 2, the addition is evaluated before the multiplication, and the result is 10. Následující příklady znázorňují pořadí vyhodnocení ve výrazech se závorkami.The following examples illustrate the order of evaluation in parenthesized expressions. Stejně jako v předchozích příkladech se operandy vyhodnocují ještě před použitím operátoru.As in previous examples, the operands are evaluated before the operator is applied.

PříkazStatement Pořadí vyhodnoceníOrder of evaluation
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) * (d - e) a, b, c, +, d, e, -, *, =a, b, c, +, d, e, -, *, =

Přetížení operátoruOperator Overloading

Můžete změnit chování operátorů pro vlastní třídy a struktury.You can change the behavior of operators for custom classes and structs. Tento proces se označuje jako přetížení operátoru.This process is referred to as operator overloading. Další informace najdete v tématu přetížitelné operátory.For more information, see Overloadable Operators.

Další informace najdete v tématu klíčová slova operátorů a operátory jazyka C#.For more information, see Operator Keywords and C# Operators.

Viz takéSee Also

Průvodce programováním v jazyce C#C# Programming Guide
Příkazy, výrazy a operátoryStatements, Expressions, and Operators