Тернарник внутри блока if - порядок операций C#

Не могу понять порядок выполнения операций в следующем коде

var a = true;
var b = true;
var c = true;

if (a == true
    || b == true
    || c ? false : true)
{
    // Сюда не попадаем
    var q = 10;
    Console.WriteLine(q);
}

Если завернуть тернарник в скобки (c ? false : true), то тогда попадаем внутрь блока if. Разве тернарный оператор не считается за единую операцию? И если он таким не является, то всё равно не укладывается в голове почему игнорируются остальные сравнения?


Ответы (1 шт):

Автор решения: MBo

Условный тернарный оператор имеет почти самый низкий приоритет, поэтому сначала выполняется логическое ИЛИ, а потом уже результат используется в тернарнике, примерно так:

if ( (a == true || b == true  || c)
                                 ? false : true)

Скобки вокруг тернарного оператора помогают реализовать именно ту логику, которую вы хотите.

P.S. a == true не надо писать, достаточно просто использовать a

→ Ссылка