我有这个非常简单的例子:
class Program
{
class A
{
public bool B;
}
static void Main()
{
System.Collections.ArrayList list = null;
if (list?.Count > 0)
{
System.Console.WriteLine("Contains elements");
}
A a = null;
if (a?.B)
{
System.Console.WriteLine("Is initialized");
}
}
}
该行if (list?.Count > 0)
编译完美,这意味着 if list
is null
,表达式默认Count > 0
变为false
。
但是,该行if (a?.B)
会引发编译器错误,提示我无法隐式转换bool?
为bool
.
为什么一个与另一个不同?