ВыраженияExpressions

Выражения создаются из операндов и операторов.Expressions are constructed from operands and operators. Операторы в выражении указывают, какие действия нужно применить к операндам.The operators of an expression indicate which operations to apply to the operands. Примеры операторов: +, -, *, / и new.Examples of operators include +, -, *, /, and new. Операндами могут являться литералы, поля, локальные переменные, выражения и т. п.Examples of operands include literals, fields, local variables, and expressions.

Если выражение содержит несколько операторов, порядок вычисления этих операторов определяется их приоритетом.When an expression contains multiple operators, the precedence of the operators controls the order in which the individual operators are evaluated. Например, выражение x + y * z вычисляется как x + (y * z), поскольку оператор * имеет более высокий приоритет, чем оператор +.For example, the expression x + y * z is evaluated as x + (y * z) because the * operator has higher precedence than the + operator.

Если операнд располагается между двумя операторами с одинаковым приоритетом, порядок их выполнения определяется ассоциативностью операторов.When an operand occurs between two operators with the same precedence, the associativity of the operators controls the order in which the operations are performed:

  • Все бинарные операторы, за исключением операторов присваивания, имеют левую ассоциативность,то есть эти операции выполняются слева направо.Except for the assignment operators, all binary operators are left-associative, meaning that operations are performed from left to right. Например, выражение x + y + z вычисляется как (x + y) + z.For example, x + y + z is evaluated as (x + y) + z.
  • Операторы присваивания и условный оператор (?:) являются правоассоциативными то есть эти операции выполняются справа налево.The assignment operators and the conditional operator (?:) are right-associative, meaning that operations are performed from right to left. Например, выражение x = y = z вычисляется как x = (y = z).For example, x = y = z is evaluated as x = (y = z).

Приоритет и ассоциативность операторов можно изменять, используя скобки.Precedence and associativity can be controlled using parentheses. Например, в выражении x + y * z сначала y умножается на z, а результат прибавляется к x, а в выражении (x + y) * z сначала суммируются x и y, а результат умножается на z.For example, x + y * z first multiplies y by z and then adds the result to x, but (x + y) * z first adds x and y and then multiplies the result by z.

Большинство операторов могут быть перегружены.Most operators can be overloaded. Перегрузка операторов позволяет создать пользовательскую реализацию оператора для таких операций, в которых один или оба операнда имеют определяемый пользователем тип класса или структуры.Operator overloading permits user-defined operator implementations to be specified for operations where one or both of the operands are of a user-defined class or struct type.

C# предоставляет несколько операторов для выполнения арифметических, логических операций, побитовых операций и сдвигов, сравнения на равенство и порядок.C# provides a number of operators to perform arithmetic, logical, bitwise and shift operations and equality and order comparisons.

Полный список операторов C#, упорядоченных по уровню приоритета, см. в статье Операторы C#.For the complete list of C# operators ordered by precedence level, see C# operators.