C#operátory (C# Referenční dokumentace)C# operators (C# reference)

C#poskytuje několik operátorů podporovaných integrovanými typy.C# provides a number of operators supported by the built-in types. Například aritmetické operátory provádějí aritmetické operace s numerickými operandy a logické logické operátory provádějí logické operace s logickými operandy .For example, arithmetic operators perform arithmetic operations with numeric operands and Boolean logical operators perform logical operations with the bool operands. Některé operátory mohou být přetíženy.Certain operators can be overloaded. S přetížením operátorů můžete určit chování operátoru pro operandy uživatelsky definovaného typu.With operator overloading, you can specify the operator behavior for the operands of a user-defined type.

Ve výrazu, priority operátoru a asociativita určují pořadí, ve kterém jsou operace prováděny.In an expression, operator precedence and associativity determine the order in which the operations are performed. Pomocí závorek můžete změnit pořadí vyhodnocování stanovené prioritou operátoru a asociativita.You can use parentheses to change the order of evaluation imposed by operator precedence and associativity.

Priorita operátorůOperator precedence

Ve výrazu s více operátory jsou operátory s vyšší prioritou vyhodnocovány před operátory s nižší prioritou.In an expression with multiple operators, the operators with higher precedence are evaluated before the operators with lower precedence. V následujícím příkladu je násobení provedeno jako první, protože má vyšší prioritu než přidání:In the following example, the multiplication is performed first because it has higher precedence than addition:

var a = 2 + 2 * 2;
Console.WriteLine(a); //  output: 6

Chcete-li změnit pořadí vyhodnocování stanovené předností operátorů, použijte závorky:Use parentheses to change the order of evaluation imposed by operator precedence:

var a = (2 + 2) * 2;
Console.WriteLine(a); //  output: 8

V následující tabulce jsou uvedeny C# operátory od nejvyšší priority k nejnižší.The following table lists the C# operators starting with the highest precedence to the lowest. Operátory v rámci jednotlivých řádků mají stejnou prioritu.The operators within each row have the same precedence.

OperátoryOperators Kategorie nebo názevCategory or name
x. y, x?. y, x? [ y], f (x), a[i], x + +, x--, New, typeof, zaškrtnutí, nezaškrtnuto, Default, nameof, Delegate, sizeof, stackalloc, x-> yx.y, x?.y, x?[y], f(x), a[i], x++, x--, new, typeof, checked, unchecked, default, nameof, delegate, sizeof, stackalloc, x->y PrimárníPrimary
+ x, -x, !x, ~ x, + + x, --x, ^ x, (t) x, await, & x, * x, true a false+x, -x, !x, ~x, ++x, --x, ^x, (T)x, await, &x, *x, true and false UnárníUnary
x.. požadovanéx..y RozsahRange
x * y, x/y, x% yx * y, x / y, x % y MultiplikativníMultiplicative
x + y, x – yx + y, x – y PřičítánímAdditive
x << y, x > > yx << y, x >> y PosouváShift
x < y, x > y, x <= y, x > = y, je, jakox < y, x > y, x <= y, x >= y, is, as Relační testování a testování typuRelational and type-testing
x = = y, x! = yx == y, x != y RovnostEquality
x & y Logická logický operátor and nebo BITOVÝ logický operátor andBoolean logical AND or bitwise logical AND
x ^ y Logická logická hodnota XOR nebo bitový logický operátor XORBoolean logical XOR or bitwise logical XOR
x | y Logická nebo logická logická hodnota neboBoolean logical OR or bitwise logical OR
x & & yx && y Podmiňovací operátor ANDConditional AND
× | | yx || y Podmiňovací operátor ORConditional OR
x?? požadovanéx ?? y Operátor slučování nullNull-coalescing operator
r? t: fc ? t : f Podmíněný operátorConditional operator
x = y, x + = y, x-= y, x * = y, x/= y, x% = y, x & = y, x |= y, x ^ = y, x < < = y, x > > = y, x?? = y, =>x = y, x += y, x -= y, x *= y, x /= y, x %= y, x &= y, x |= y, x ^= y, x <<= y, x >>= y, x ??= y, => Přiřazení a deklarace lambdaAssignment and lambda declaration

Operátor asociativitaOperator associativity

Pokud mají operátory stejnou prioritu, asociativita operátor určuje pořadí, ve kterém jsou operace provedeny:When operators have the same precedence, associativity of the operators determines the order in which the operations are performed:

  • Operátory asociativní zleva jsou vyhodnocovány v pořadí zleva doprava.Left-associative operators are evaluated in order from left to right. S výjimkou operátorů přiřazení a operátorů slučování nulljsou všechny binární operátory asociativní.Except for the assignment operators and the null-coalescing operators, all binary operators are left-associative. Například a + b - c je vyhodnocen jako (a + b) - c.For example, a + b - c is evaluated as (a + b) - c.
  • Operátory asociativní zprava jsou vyhodnocovány v pořadí zprava doleva.Right-associative operators are evaluated in order from right to left. Operátory přiřazení, operátory slučování null a podmíněný operátor ?: jsou asociativní zprava.The assignment operators, the null-coalescing operators, and the conditional operator ?: are right-associative. Například x = y = z je vyhodnocen jako x = (y = z).For example, x = y = z is evaluated as x = (y = z).

Pomocí závorek změňte pořadí hodnocení, které je asociativita operátorem:Use parentheses to change the order of evaluation imposed by operator associativity:

int a = 13 / 5 / 2;
int b = 13 / (5 / 2);
Console.WriteLine($"a = {a}, b = {b}");  // output: a = 1, b = 6

Vyhodnocení operanduOperand evaluation

Nesouvisí s prioritou operátorů a asociativita, jsou operandy ve výrazu vyhodnocovány zleva doprava.Unrelated to operator precedence and associativity, operands in an expression are evaluated from left to right. Následující příklady ukazují pořadí, ve kterém jsou operátory a operandy vyhodnocovány:The following examples demonstrate the order in which operators and operands are evaluated:

VýrazExpression 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, *

Obvykle jsou vyhodnocovány všechny operandy operátoru.Typically, all operator operands are evaluated. Některé operátory však vyhodnocuje operandy podmíněně.However, some operators evaluate operands conditionally. To znamená, že hodnota operandu úplně vlevo takového operátoru definuje, zda má být vyhodnocen (nebo které) jiné operandy.That is, the value of the leftmost operand of such an operator defines if (or which) other operands should be evaluated. Tyto operátory jsou podmínkou podmíněného logického operátoru and (&&) a OR (||) , operátory sloučení s hodnotou null ?? a ??=, operátory s hodnotou null ?. a ?[]a podmíněný operátor ?:.These operators are the conditional logical AND (&&) and OR (||) operators, the null-coalescing operators ?? and ??=, the null-conditional operators ?. and ?[], and the conditional operator ?:. Další informace naleznete v popisu každého operátoru.For more information, see the description of each operator.

specifikace jazyka C#C# language specification

Další informace naleznete v části operátory ve C# specifikaci jazyka.For more information, see the Operators section of the C# language specification.

Viz také:See also