当使用空条件运算符时,第一个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; }
}
}
答案 0 :(得分:8)
x ?? y – returns x if it is non-null; otherwise, returns y.
test?.Boolean在第一种情况下为x,(true&& 1 == 2)为y。