Operadores (Guía de programación de C#)
Actualización: Julio de 2008
En C#, un operador es un término o un símbolo que acepta como entrada una o más expresiones, u operandos, y devuelve un valor. Los operadores que requieren un operando, como el operador de incremento (++) o new, se conocen como operadores unarios. Los operadores que requieren dos operandos, como los operadores aritméticos (+,-,*,/) se conocen como operadores binarios. Un operador, el operador condicional (?:), utiliza tres operandos y es el único operador terciario de C#.
La instrucción de C# siguiente contiene un solo operador unario y un solo operando. El operador de incremento, ++, modifica el valor del operando y:
y++;
La instrucción de C# siguiente contiene dos operadores binarios, cada uno con dos operandos. El operador de asignación, =, tiene el entero y y la expresión 2 + 3 como operandos. La propia expresión 2 + 3 contiene el operador de suma y los valores enteros 2 y 3 como operandos:
y = 2 + 3;
Un operando puede ser una expresión válida de cualquier tamaño y puede estar compuesto por una cantidad cualquiera de otras operaciones. Cuando se evalúa una expresión, el compilador evalúa en primer lugar todos los operandos de izquierda a derecha. Una vez evaluados todos los operandos, se evalúan los operadores en un orden específico conocido como prioridad de operador. La tabla siguiente divide a los operadores en categorías basadas en el tipo de operación que realizan. Las categorías se muestran en orden de prioridad.
Operadores principales
Expression |
Descripción |
---|---|
x.y |
Acceso a miembros |
f(x) |
Invocación de método y delegado |
a[x] |
Acceso a matriz e indizador |
x++ |
Incremento postfijo |
x-- |
Decremento postfijo |
new T(...) |
Creación de objeto y delegado |
new T(...){...} |
Creación de objetos con inicializador. Vea Inicializadores de objeto y de colección (Guía de programación de C#). |
new {...} |
Inicializador de objeto anónimo. Vea Tipos anónimos (Guía de programación de C#). |
new T[...] |
Creación de matrices. Vea Matrices (Guía de programación de C#). |
typeof(T) |
Obtener el objeto System.Type para T |
checked(x) |
Evaluar expresión en contexto comprobado |
unchecked(x) |
Evaluar expresión en contexto no comprobado |
default (T) |
Obtener valor predeterminado de tipo T |
delegate {} |
Función anónima (método anónimo) |
Operadores unarios
Expression |
Descripción |
---|---|
+x |
Identidad |
-x |
Negación |
!x |
Negación lógica |
~x |
Negación bit a bit |
++x |
Incremento prefijo |
--x |
Decremento prefijo |
(T)x |
Convertir explícitamente x al tipo T |
Operadores de multiplicación
Expression |
Descripción |
---|---|
Multiplicación |
|
División |
|
Resto |
Operadores aditivos
Expression |
Descripción |
---|---|
x + y |
Suma, concatenación de cadenas, combinación de delegados |
x - y |
Resta, eliminación de delegados |
Operadores de desplazamiento
Expression |
Descripción |
---|---|
x << y |
Desplazamiento a la izquierda |
x >> y |
Desplazamiento a la derecha |
Operadores relacionales y de tipo
Expression |
Descripción |
---|---|
x < y |
Menor que |
x > y |
Mayor que |
x <= y |
Menor o igual que |
x >= y |
Mayor o igual que |
x is T |
Devuelve true si x es T, de lo contrario devuelve false |
x as T |
Devuelve x escrito como T, o null si x no es T |
Operadores de igualdad
Expression |
Descripción |
---|---|
x == y |
Igual |
x != y |
No igual |
Operadores de asignación y anónimos
Expression |
Descripción |
---|---|
Asignación |
|
x op= y |
Asignación compuesta, admite estos operadores: +=, -=, *=, /=, %=, &=, |=, !=, <<=, >>= |
(T x) => y |
Función anónima (expresión lambda) |
Operadores lógicos, condicionales y null
Categoría |
Expression |
Descripción |
---|---|---|
AND lógico |
x & y |
AND bit a bit entero, AND lógico booleano |
XOR lógico |
x ^ y |
XOR bit a bit entero, XOR lógico booleano |
OR lógico |
x | y |
OR bit a bit entero, OR lógico booleano |
AND condicional |
x && y |
Sólo evalúa y si x es true |
OR condicional |
x || y |
Sólo evalúa y si x es false |
Uso combinado de Null |
X ?? y |
Se evalúa como y si x es null, de lo contrario se evalúa como x |
Condicional |
x ?: y : z |
Se evalúa como y si x es true, como z si x es false |
Cuando dos operadores con la misma prioridad están presentes en una expresión, se evalúan según su asociatividad. Los operadores que son asociativos por la izquierda se evalúan en orden de izquierda a derecha. Por ejemplo, x * y / z se evalúa como (x * y) / z. Los operadores que son asociativos por la derecha se evalúan en orden de derecha a izquierda. Los operadores de asignación y el operador terciario (?:) son asociativos por la derecha. Todos los demás operadores binarios son asociativos por la izquierda.
Se pueden utilizar paréntesis para incluir una expresión y hacer que esa expresión se evalúe antes que cualquier otra. Por ejemplo, 2 + 3 * 2 normalmente daría 8 como resultado. Esto es porque los operadores multiplicativos tienen prioridad sobre los operadores aditivos. Si se escribe la expresión como (2 + 3) * 2 da como resultado 10, ya que ésta indica al compilador de C# que el operador de adición (+) se debe evaluar antes que el operador de multiplicación (*).
Se puede cambiar el comportamiento de los operadores con las estructuras y cargas personalizadas. Este proceso se conoce como sobrecarga de operadores. Para obtener más información, vea Operadores sobrecargables (Guía de programación de C#).
Secciones relacionadas
Para obtener más información, vea Palabras clave de operadores (Referencia de C#) y Operadores de C#.
Vea también
Conceptos
Referencia
Instrucciones, expresiones y operadores (Guía de programación de C#)
Historial de cambios
Fecha |
Historial |
Motivo |
---|---|---|
Julio de 2008 |
Se ha quitado una declaración incorrecta sobre el resultado indefinido. |
Mejora de la información. |