domingo, 12 de septiembre de 2021

Operadores ternarios en C#

Los operadores ternarios, en pocas palabras, son abreviaturas de una sentencia IF devolviendo un único resultado; es decir, que abreviaremos una sentencia IF de la cual se desprenda un resultado cuando el valor evaluado es TRUE y otro valor cuando cuando el valor evaluado es FALSE.

La representacion estandar de una sentencia IF simple con devolucion de valores sería la siguiente:

int resultado = 0;

if(x == "si")

    resultado = 1;

else

    resultado =0;

La expresión anterior se podría reducir con un operador ternario de la siguiente forma:

int resultado = x == "si" ? 1 : 0;

La forma de entender lo anterior es la siguiente:

  1. int resultado = Ésto quiere decir que el resultado de la operacion ternaria se almacenara en la variable de tipo entero llamada "resultado"
  2. x == "si" ? Ésta sección es donde se establece el criterio de evaluación, es decir, lo que va entre parentesis de nuestra sentencia IF estandar
  3. 1 Resultado cuando el criterio de evaluacion es verdadero (true)
  4. : Representa la palabra reservada else
  5. 0 Resutlado cuando el criterio de evaluación es falso (false)

Es decir que cuando se cumpla el criterio que se encuentra antes del simbolo de interrogación (?), nuestro operador ternario devolverá el valor que se encuentra antes de los dos puntos (:), y si el criterio no se cumple, nuestro operador devolverá el valor que se encuentra despues de los dos puntos (:).

Sin embargo ésta no es la única representación ternaria existente... imaginemos que tenemos el siguiente modelo de sentencia IF:

string resultado = null;

if(x == "si")

    resultado = "hola mundo";

En el modelo anterior vemos que cuando el criterio de evaluación NO se cumple (es decir que da como resultado un valor false), se está manteniendo un valor null (el cual ha sido asignado como valor inicial a nuestra variable "resultado"), en éste caso el operador ternario resultante es mas sencillo:

int resultado = x == "si" ?? "hola mundo";

La forma de entender lo anterior es la siguiente:

  1. int resultado = Ésto quiere decir que el resultado de la operacion ternaria se almacenara en la variable de tipo entero llamada "resultado"
  2. x == "si" ?? Ésta sección es donde se establece el criterio de evaluación, es decir, lo que va entre parentesis de nuestra sentencia IF estandar
  3. "hola mundo" Resultado cuando el criterio de evaluacion es verdadero (true)

Como  podemos observar, en éste caso el operador es mas compacto, debido a que solo devolverá un resultado (cuando el criterio de evaluación de como resultado true), si el criterio no se cumple (es decir que da como resultado false) entonces se asignará el valor null.

Patrones de Diseño de Software

Lo más visto