Null 条件运算符在 if 语句中始终为 true 时应该为 false

Null-conditional operator always true in if statement when should be false

当使用空条件运算符时,第一个 if 语句将始终输出 True,而第二个 if 语句在使用括号时将输出 False。为什么第一个 if 语句为真?

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            var test = new Test { Boolean = true };

            //True
            if (test?.Boolean ?? true && 1 == 2)
                Console.WriteLine("True");
            else
                Console.WriteLine("False");

            //False
            if ((test?.Boolean ?? true) && 1 == 2)
                Console.WriteLine("True");
            else
                Console.WriteLine("False");
        }
    }

    public class Test
    {
        public bool? Boolean { get; set; }
    }
}
x ?? y – returns x if it is non-null; otherwise, returns y.

test?.Boolean 在第一种情况下是 x 而 (true && 1 == 2) 是 y.