Null条件运算符总是在if语句中为true时应为false

时间:2017-07-14 14:26:03

标签: c# .net c#-6.0

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

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; }
    }
}

1 个答案:

答案 0 :(得分:8)

x ?? y – returns x if it is non-null; otherwise, returns y.

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