It's the most obvious usage for Nullable<bool>
Your "obvious" behaviour leads to many inobvious behaviours.
If
if(x)
is treated as false when x is null, then what should happen to
if(!x)
? !x
is also null when x is null, and therefore will be treated as false also! Does it not seem strange that you cannot reverse the behaviour of a conditional with an inversion?
What about
if (x | !x)
Surely that should always be true, but if x is null then the whole expression is null, and therefore false.
It is better to avoid these inobvious situations by simply making them all illegal. C# is a "make the user say what they mean unambiguously" language.
I believe that VB has the behaviour you want. You might consider switching to VB if this is the sort of thing you like.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…