ExpresionesExpressions

Las expresiones se construyen con operandos y operadores.Expressions are constructed from operands and operators. Los operadores de una expresión indican qué operaciones se aplican a los operandos.The operators of an expression indicate which operations to apply to the operands. Ejemplos de operadores incluyen +, -, *, / y new.Examples of operators include +, -, *, /, and new. Algunos ejemplos de operandos son literales, campos, variables locales y expresiones.Examples of operands include literals, fields, local variables, and expressions.

Cuando una expresión contiene varios operadores, la precedencia de los operadores controla el orden en que se evalúan los operadores individuales.When an expression contains multiple operators, the precedence of the operators controls the order in which the individual operators are evaluated. Por ejemplo, la expresión x + y * z se evalúa como x + (y * z) porque el operador * tiene mayor precedencia que el operador +.For example, the expression x + y * z is evaluated as x + (y * z) because the * operator has higher precedence than the + operator.

Cuando un operando se encuentra entre dos operadores con la misma precedencia, la asociatividad de los operadores controla el orden en que se realizan las operaciones: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:

  • Excepto los operadores de asignación, todos los operadores binarios son asociativos a la izquierda, lo que significa que las operaciones se realizan de izquierda a derecha.Except for the assignment operators, all binary operators are left-associative, meaning that operations are performed from left to right. Por ejemplo, x + y + z se evalúa como (x + y) + z.For example, x + y + z is evaluated as (x + y) + z.
  • Los operadores de asignación y el operador condicional (?:) son asociativos a la derecha, lo que significa que las operaciones se realizan de derecha a izquierda.The assignment operators and the conditional operator (?:) are right-associative, meaning that operations are performed from right to left. Por ejemplo, x = y = z se evalúa como x = (y = z).For example, x = y = z is evaluated as x = (y = z).

La precedencia y la asociatividad pueden controlarse mediante paréntesis.Precedence and associativity can be controlled using parentheses. Por ejemplo, x + y * z primero multiplica y por z y luego suma el resultado a x, pero (x + y) * z primero suma x y y y luego multiplica el 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.

La mayoría de los operadores se pueden sobrecargar.Most operators can be overloaded. La sobrecarga de operador permite la especificación de implementaciones de operadores definidas por el usuario para operaciones donde uno o ambos operandos son de un tipo de struct o una clase definidos por el usuario.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# ofrece una serie de operadores para realizar operaciones aritméticas, lógicas, de desplazamiento y bit a bit, además de comparaciones de igualdad y de orden.C# provides a number of operators to perform arithmetic, logical, bitwise and shift operations and equality and order comparisons.

Para obtener la lista completa de los operadores de C# ordenados por nivel de prioridad, vea Operadores de C#.For the complete list of C# operators ordered by precedence level, see C# operators.