Comportamiento de && (AND condicional) y || (OR condicional)
Cuando utilizamos el AND condicional lo que hacemos en evaluar dos condiciones las cuales en el caso del && deben cumplirse ambas para que la condición sea verdadera. Vale aclarar como hace el framework para realizar la evaluación de las condiciones. Al utilizar el operador && el framework evaluara la primer condición y solo si es verdadera prosigue a evaluar la segunda condición. Este comportamiento genera un ahorro computacional ya que en caso de que la primer condición no se cumpla considera en ese momento que toda la condición es falsa.En el caso del OR condicional con que una de las condiciones sea verdadera toda la condición da como resultado verdadero así que como ya explique en el caso anterior evaluar la primer condición y en caso de que sea verdadera el framework considera que es suficiente y no continua con la otra parte de la evaluación.
Comportamiento de & (AND logico) y | (OR logico)
A diferencia de los casos anteriores (cuando utilizamos los operadores simples en lugar de dobles) lo que estamos haciendo es decirle al framework que queremos que la comparación sea lógica con lo cual ambas partes de la condición va a ser evaluadas antes de resolver el resultado de la comparación. Esta es la principal característica de ambos tipos de operadores. Suelen ser utilizados con con tipos de datos int ya que poseen la capacidad de hacer un Bitwise pero también pueden ser utilizados con tipos de datos bool.El XOR logico de la mano del ^
Existe un operador que no es muy utilizado pero sirve para realizar un evaluación de XOR lógica y es el ^. Esta evaluación solo sera considerada positiva si alguno de los dos es verdadero pero no los dos como podemos ver en el siguiente ejemplo:if (var1 ^ var2)
{
Console.WriteLine("Entre porque uno de los dos es falso");
}
Comportamiento del operador ?
Este operador tiene multiples usos dependiendo de donde se lo utilice. En este caso puntual nos vamos a enfocar en el uso que se le da para realizar comparaciones (mas precisamente el if inline) y la estructura que tiene es la siguiente:var ret = var1 & var2 ? 1 + 2 : 0;
Como podemos ver el ? se utiliza para realizar la evaluación de nuestra condición. El valor que se encuentra inmediatamente después del ? es el valor que retornara nuestro if inline en caso de que la condición sea verdadera. El valor que se encuentra después del símbolo : es el valor que retornaremos en caso de que la condición sea falsa.
Comportamiento del operador ??
En este caso el operador ?? nos ofrece la posibilidad de realizar una evaluación por null. Es decir como podemos ver en el siguiente ejemplo comparamos una expresión o variable por null y nos ofrece reemplazar el valor null por otro como se ve en el ejemplo siguiente, cabe aclarar que el valor por el que vamos a reemplazar en caso de que sea null nuestra expresión debe ser igual a la expresión que estamos evaluando.int? val = 0; var ret = val ?? 0;
Para resumir podemos decir que las diferencias son mínimas en el caso de los operadores Lógicos y Condicionales y una diferencia de comportamiento en el caso de ? y ??. Es importante que tengamos bien en clara las diferencias para poder explicarlas de manera simple y sencilla.
No hay comentarios:
Publicar un comentario