Friday, August 14, 2015

Comandos

Operadores

  • Los operadores aritméticos funcionan igual que en C y C++.
  • El resultado de los operadores relacionales y lógicos es un valor de tipo bool.
  • Los operadores de cortocircuito evalúan el segundo operando solo cuando es necesario.
  • Los operadores a nivel de bits no se pueden aplicar a tipos boolfloatdouble o decimal.




operadores de C#
Las operaciones en tipos enteros (como ==!=<>&| ) se suelen permitir en tipos de enumeración (enum).
En las secciones se enumeran los operadores de C# desde la precedencia más alta a la más baja. Los operadores de cada sección comparten el mismo nivel de precedencia.

Estos son los operadores de precedencia más alta. Tenga en cuenta que puede hacer clic en los operadores para ir a las páginas de detalles con ejemplos.
x.y: acceso a miembros.
x?.y: acceso a miembros condicional null. Devuelve null si el operando izquierdo es null.
f(x): invocación de función.
a[x]: indización de objeto agregado.
a?[x]: indización condicional null. Devuelve null si el operando izquierdo es null.
x++: incremento de postfijo. Devuelve el valor de x y, a continuación, actualiza la ubicación de almacenamiento con el valor de x que es uno mayor (normalmente agrega el entero 1).
x--: decremento de postfijo. Devuelve el valor de x; a continuación, actualiza la ubicación de almacenamiento con el valor de x que es uno menos (normalmente resta el entero 1).
New: creación de instancias de tipo.
Typeof: devuelve el objeto System.Type que representa el operando.
Checked: habilita la comprobación de desbordamiento para operaciones con enteros.
Unchecked: deshabilita la comprobación de desbordamiento para operaciones con enteros. Este es el comportamiento predeterminado del compilador.
default(T): devuelve el valor inicializado predeterminado de tipo T, null para tipos de referencia, cero para tipos numéricos y cero o null en miembros para tipos de struct.
Delegate: declara y devuelve una instancia de delegado.
Sizeof: devuelve el tamaño en bytes del operando de tipo.
->: desreferenciación del puntero combinada con acceso a miembros.

Estos operadores tienen mayor precedencia que los de la sección siguiente y menor que los de la anterior. Tenga en cuenta que puede hacer clic en los operadores para ir a las páginas de detalles con ejemplos.
+x: devuelve el valor de x.
-x: negación numérica.
!x: negación lógica.
~x: complemento bit a bit.
++x: incremento de prefijo. Devuelve el valor de x después de actualizar la ubicación de almacenamiento con el valor de x que es uno mayor (normalmente agrega el entero 1).
--x: decremento de prefijo. Devuelve el valor de x después de actualizar la ubicación de almacenamiento con el valor de x que es uno menos (normalmente resta el entero 1).
(T)x: conversión de tipos.
Await: espera una Task.
&x: dirección de.
*x: desreferenciación.

Estos operadores tienen mayor precedencia que los de la sección siguiente y menor que los de la anterior. Tenga en cuenta que puede hacer clic en los operadores para ir a las páginas de detalles con ejemplos.
x * y: multiplicación.
x / y: división. Si los operandos son enteros, el resultado es un entero que se trunca hacia cero (por ejemplo, -7 / 2 is -3).
x % y: módulo. Si los operandos son enteros, devuelve el resto de dividir x entre y. Si q = x / y y r = x % y, entonces x = q * y + r.

Estos operadores tienen mayor precedencia que los de la sección siguiente y menor que los de la anterior. Tenga en cuenta que puede hacer clic en los operadores para ir a las páginas de detalles con ejemplos.
x + y: suma.
x – y: resta.

Estos operadores tienen mayor precedencia que los de la sección siguiente y menor que los de la anterior. Tenga en cuenta que puede hacer clic en los operadores para ir a las páginas de detalles con ejemplos.
x << y: desplaza los bits a la izquierda y rellena con cero a la derecha.
x >> y: desplaza los bits a la derecha. Si el operando izquierdo es int o long, los bits de la izquierda se rellenan con el bit de signo. Si el operando izquierdo es uint o ulong, los bits de la izquierda se rellenan con cero.

Estos operadores tienen mayor precedencia que los de la sección siguiente y menor que los de la anterior. Tenga en cuenta que puede hacer clic en los operadores para ir a las páginas de detalles con ejemplos.
x < y: menor que (true si x es menor que y).
x > y: mayor que (true si x es mayor que y).
x <= y: menor o igual que.
x >= y: menor o igual que.
Is: compatibilidad de tipos. Devuelve true si el operando izquierdo evaluado se puede convertir al tipo especificado en el operando derecho (un tipo estático).
As: conversión de tipos. Devuelve el operando izquierdo convertido al tipo especificado por el operando derecho (un tipo estático), pero as devuelve null donde (T)x produciría una excepción.

Estos operadores tienen mayor precedencia que los de la sección siguiente y menor que los de la anterior. Tenga en cuenta que puede hacer clic en los operadores para ir a las páginas de detalles con ejemplos.
x == y: igualdad. De forma predeterminada, para los tipos de referencia distintos de string, devuelve igualdad de referencia (prueba de identidad). Sin embargo, los tipos pueden sobrecargar ==, por lo que si su intención es probar la identidad, es mejor usar el método ReferenceEquals en object.
x != y: distinto de. Vea el comentario de ==. Si un tipo sobrecarga ==, debe sobrecargar !=.

Este operador tiene mayor precedencia que el de la sección siguiente y menor que los de la anterior. Tenga en cuenta que puede hacer clic en el operador para ir a la página de detalles con ejemplos.
x & y: AND lógico o bit a bit. El uso con tipos enteros y tipos enum suele estar permitido.

Este operador tiene mayor precedencia que el de la sección siguiente y menor que el de la anterior. Tenga en cuenta que puede hacer clic en el operador para ir a la página de detalles con ejemplos.
x ^ y: XOR lógico o bit a bit. Por lo general puede usarlo con tipos enteros y tipos enum.

Este operador tiene mayor precedencia que el de la sección siguiente y menor que el de la anterior. Tenga en cuenta que puede hacer clic en el operador para ir a la página de detalles con ejemplos.
x | y: OR lógico o bit a bit. El uso con tipos enteros y tipos enum suele estar permitido.

Este operador tiene mayor precedencia que el de la sección siguiente y menor que el de la anterior. Tenga en cuenta que puede hacer clic en el operador para ir a la página de detalles con ejemplos.
x && y: AND lógico. Si el primer operando es false, C# no evalúa el segundo operando.

Este operador tiene mayor precedencia que el de la sección siguiente y menor que el de la anterior. Tenga en cuenta que puede hacer clic en el operador para ir a la página de detalles con ejemplos.
x || y: OR lógico. Si el primer operando es true, C# no evalúa el segundo operando.

Este operador tiene mayor precedencia que el de la sección siguiente y menor que el de la anterior. Tenga en cuenta que puede hacer clic en el operador para ir a la página de detalles con ejemplos.
x ?? y: devuelve x si no es null; de lo contrario, devuelve y.

Este operador tiene mayor precedencia que el de la sección siguiente y menor que el de la anterior. Tenga en cuenta que puede hacer clic en el operador para ir a la página de detalles con ejemplos.
t ? x : y: si la prueba t es true, evalúa y devuelve x; en caso contrario, evalúa y devuelve y.

Estos operadores tienen mayor precedencia que los de la sección siguiente y menor que el de la anterior. Tenga en cuenta que puede hacer clic en los operadores para ir a las páginas de detalles con ejemplos.
x = y: asignación.
x += y: incremento. Agregue el valor de y al valor de x, almacene el resultado en x y devuelva el nuevo valor. Si xdesigna un eventy debe ser una función adecuada que C# agregue como un controlador de eventos.
x -= y: decremento. Reste el valor de y del valor de x, almacene el resultado en x y devuelva el nuevo valor. Si xdesigna un eventy debe ser una función adecuada que C# quite como un controlador de eventos.
x *= y: asignación y multiplicación. Multiplique el valor de y por el valor de x, almacene el resultado en x y devuelva el nuevo valor.
x /= y: asignación y división. Divida el valor de x por el valor de y, almacene el resultado en x y devuelva el nuevo valor.
x %= y: asignación y módulo. Divida el valor de x por el valor de y, almacene el resto en x y devuelva el nuevo valor.
x &= y: asignación y AND. AND el valor de y con el valor de x, almacene el resultado en x y devuelva el nuevo valor.
x |= y: asignación y OR. OR el valor de y con el valor de x, almacene el resultado en x y devuelva el nuevo valor.
x ^= y: asignación y XOR. XOR el valor de y con el valor de x, almacene el resultado en x y devuelva el nuevo valor.
x <<= y: asignación y desplazamiento a la izquierda. Desplace el valor de x a la izquierda y lugares, almacene el resultado en x y devuelva el nuevo valor.
x >>= y: asignación y desplazamiento a la derecha. Desplace el valor de x a la derecha y posiciones, almacene el resultado en x y devuelva el nuevo valor.
=>: declaración lambda.

Los operadores aritméticos (+-*/) pueden producir resultados fuera del rango de valores posibles para el tipo numérico implicado. Para obtener detalles debe ir a la sección del operador en cuestión, pero en general:
  • El desbordamiento aritmético de enteros produce una OverflowException o descarta los bits más significativos del resultado. La división de enteros por cero siempre produce una DivideByZeroException.
  • El desbordamiento aritmético de punto flotante o la división por cero nunca producen una excepción, porque los tipos de punto flotante se basan en el estándar IEEE 754 y por tanto tienen disposiciones para representar el infinito y NaN (No es un número).
  • El desbordamiento aritmético decimal siempre produce una OverflowException. La división decimal por cero siempre produce una DivideByZeroException.
Cuando se produce el desbordamiento de enteros, lo que suceda dependerá del contexto de ejecución, que puede ser comprobado o no comprobado. En un contexto comprobado, se produce una OverflowExceptionEn un contexto no comprobado, se descartan los bits más significativos del resultado y la ejecución continúa. Por lo tanto, C# ofrece la posibilidad de controlar u omitir el desbordamiento.
Además de los operadores aritméticos, las conversiones de tipo entero a tipo entero también pueden provocar un desbordamiento (por ejemplo, la conversión de un long a un int) y están sujetas a ejecución comprobada o no comprobada. Sin embargo, los operadores bit a bit y los de desplazamiento nunca producen desbordamiento.

No comments:

Post a Comment