Operador de fusión C #
¿Por qué el siguiente código devuelve falso?
public static void Main()
{
bool? someCondition = true;
bool someConditionOverride = false;
bool? result = someCondition ?? someConditionOverride ? false : (bool?)null;
Console.WriteLine(result);
}
Estaba exprectando el resultado serátrue
, ya quesomeCondition
no esnull
y??
el operador regresarátrue
. Sin embargo, parece que el operando derecho se calcula primero y la parte izquierda simplemente se ignora.
Agregar corchetes soluciona la confusión:
bool? result = someCondition ?? (someConditionOverride ? false : (bool?)null)
Y el resultado serátrue
. Sin embargo, todavía tengo curiosidad por qué la parte izquierda había sido ignorada en el primer ejemplo.