Operadores de C#

Actualización: Julio de 2008

C# proporciona un amplio conjunto de operadores, que son símbolos que especifican las operaciones que se deben realizar en una expresión. Generalmente se permiten en las enumeraciones las operaciones de tipos integrales como ==, !=, <, >, <=, >=, binary +, binary -, ^, &, |, ~, ++, -- y sizeof(). Además, el usuario puede sobrecargar muchos de los operadores, es decir, cambiar su significado al aplicarlos a un tipo definido por el usuario.

En la tabla siguiente se muestran los operadores de C# agrupados por orden de prioridad. Los operadores dentro de cada de grupo tienen la misma prioridad.

Categorías

Operadores

Principal

x.y

f(x)

a[x]

x++

x--

new

typeof

checked

unchecked

->

Unario

+

-

!

~

++x

--x

(T)x

true

false

&

sizeof

Multiplicativo

*

/

%

Sumatorio

+

-

Desplazamiento

<<

>>

Comprobación de tipos y relacionales

<

>

<=

>=

is

as

Igualdad

==

!=

AND lógico

&

XOR lógico

^

OR lógico

05ce3794-6675-4025-bddb-eaaa0ec22892.xml.rtf

AND condicional

&&

OR condicional

||

Condicional

?:

Asignación

=

+=

-=

*=

/=

%=

&=

|=

^=

<<=

>>=

Uso combinado de Null

??

Lambda

Operador => (Referencia de C#)

Desbordamiento aritmético

Los operadores aritméticos (+, -, *, /) pueden producir resultados fuera del intervalo de valores posibles para el tipo numérico implicado. Aunque para encontrar información detallada, debe consultar la sección acerca del operador específico; en general, podemos decir:

  • El desbordamiento aritmético de enteros produce una excepción de desbordamiento (OverflowException) o bien elimina los bits más significativos del resultado. La división de enteros por cero siempre produce una excepción DivideByZeroException.

  • El desbordamiento aritmético o la división por cero en punto flotante no producen una excepción, ya que los tipos de punto flotante se basan en el estándar IEEE 754, que proporciona una representación para los valores infinito y NaN (Not a Number, no es un número).

  • El desbordamiento aritmético de valores de tipo decimal siempre produce una excepción OverflowException. La división de decimales por cero siempre produce una excepción DivideByZeroException.

Cuando se produce un desbordamiento de enteros, lo que ocurre depende del contexto de la ejecución, el cual puede ser checked o unchecked. En un contexto checked (comprobado), se produce una excepción OverflowException. En un contexto unchecked (no comprobado), los bits más significativos del resultado no se tienen en cuenta y la ejecución continúa. De esta forma, C# permite elegir entre atender o desatender el desbordamiento.

Además de los operadores aritméticos, las conversiones entre tipos integrales también pueden producir desbordamiento; por ejemplo, al convertir un tipo long en un tipo int, y están sometidas al tipo de ejecución checked o unchecked. Sin embargo, los operadores bit a bit y los operadores de desplazamiento nunca producen desbordamiento.

Vea también

Tareas

Ejemplo Operator Overloading

Conceptos

Guía de programación de C#

Referencia

Operadores sobrecargables (Guía de programación de C#)

Palabras clave de C#

Otros recursos

Referencia de C#

Visual C#

Historial de cambios

Fecha

Historial

Motivo

Julio de 2008

Se ha movido el operador ?? fuera de la categoría de asignación por sugerencia del cliente.

Corrección de errores de contenido.