J'ai un exemple très simple :
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");
}
}
}
La ligne if (list?.Count > 0)
compile parfaitement, ce qui signifie que si list
es null
l'expression Count > 0
devient false
par défaut.
Cependant, la ligne if (a?.B)
jette une erreur de compilation en disant que je ne peux pas convertir implicitement bool?
a bool
.
Pourquoi l'un est-il différent de l'autre ?