bool? is nullable while bool is not.
bool? first;
bool second;
In the above code, first will be null while second will be false.
The ? symbol after a type is only a shortcut to the Nullable type, bool? is equivalent to Nullable<bool>.
bool is a value type, this means that it cannot be null, so the Nullable type basically allows you to wrap value types, and being able to assign null to them.
bool? can contain three different values: true, false and null.
x y x & y x | y true true true true true false false true true null null true false true false true false false false false false null false null null true null true null false false null null null null null
REF: https://stackoverflow.com/questions/1181491/whats-the-difference-between-bool-and-bool