{1>Expressões<1}Expressions

Expressões são construídas a partir de operandos e operadores.Expressions are constructed from operands and operators. Os operadores de uma expressão indicam quais operações devem ser aplicadas aos operandos.The operators of an expression indicate which operations to apply to the operands. Exemplos de operadores incluem +, -, *, / e new.Examples of operators include +, -, *, /, and new. Exemplos de operandos incluem literais, campos, variáveis locais e expressões.Examples of operands include literals, fields, local variables, and expressions.

Quando uma expressão contiver vários operadores, a precedência dos operadores controla a ordem na qual os operadores individuais são avaliados.When an expression contains multiple operators, the precedence of the operators controls the order in which the individual operators are evaluated. Por exemplo, a expressão x + y * z é avaliada como x + (y * z) porque o operador * tem precedência maior do que o operador +.For example, the expression x + y * z is evaluated as x + (y * z) because the * operator has higher precedence than the + operator.

Quando ocorre um operando entre dois operadores com a mesma precedência, a associatividade dos operadores controla a ordem na qual as operações são executadas: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:

  • Exceto para os operadores de atribuição e de União nulo, todos os operadores binários são associativos à esquerda, o que significa que as operações são executadas da esquerda para a direita.Except for the assignment and null-coalescing operators, all binary operators are left-associative, meaning that operations are performed from left to right. Por exemplo, x + y + z é avaliado como (x + y) + z.For example, x + y + z is evaluated as (x + y) + z.
  • Os operadores de atribuição, a ?? de União nula e os operadores de ??= e o operador condicional ?: são associativos à direita, o que significa que as operações são executadas da direita para a esquerda.The assignment operators, the null-coalescing ?? and ??= operators, and the conditional operator ?: are right-associative, meaning that operations are performed from right to left. Por exemplo, x = y = z é avaliado como x = (y = z).For example, x = y = z is evaluated as x = (y = z).

Precedência e associatividade podem ser controladas usando parênteses.Precedence and associativity can be controlled using parentheses. Por exemplo, x + y * z primeiro multiplica y por z e, em seguida, adiciona o resultado a x, mas (x + y) * z primeiro adiciona x e y e, em seguida, multiplica o resultado por 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.

A maioria dos operadores pode ser sobrecarregada.Most operators can be overloaded. A sobrecarga de operador permite que implementações de operador definidas pelo usuário sejam especificadas para operações em que um ou ambos os operandos são de um tipo struct ou de classe definida pelo usuário.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# fornece uma série de operadores para realizar operações aritméticas, lógicas, bit a bit e shift e comparações de igualdade e ordem.C# provides a number of operators to perform arithmetic, logical, bitwise and shift operations and equality and order comparisons.

Para obter a lista completa de operadores do C# ordenada pelo nível de precedência, confira Operadores do C#.For the complete list of C# operators ordered by precedence level, see C# operators.