У меня есть этот очень простой пример:
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)
отлично компилируется, что означает, что если list
равно null
, выражение Count > 0
по умолчанию становится false
.
Однако строка if (a?.B)
выдает ошибку компилятора, говоря, что я не могу неявно преобразовывать bool?
в bool
.
Почему один отличается от другого?