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.
当使用空条件运算符时,第一个 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.