Operador de coalescência c #
Por que o código a seguir retorna false?
public static void Main()
{
bool? someCondition = true;
bool someConditionOverride = false;
bool? result = someCondition ?? someConditionOverride ? false : (bool?)null;
Console.WriteLine(result);
}
Eu estava expressando o resultado serátrue
, Desde asomeCondition
não énull
e??
operador retornarátrue
. No entanto, parece que o operando direito é calculado primeiro e a parte esquerda é simplesmente ignorada.
A adição de colchetes corrige a confusão:
bool? result = someCondition ?? (someConditionOverride ? false : (bool?)null)
E o resultado serátrue
. No entanto, ainda estou curioso por que a parte esquerda foi ignorada no primeiro exemplo.