С# имеет две разные категории типов: типы значений и ссылочные типы. Среди других, более важных различий, типы значений, такие как bool или int, не могут содержать нулевые значения.
Однако вы можете использовать версию с нулевым значением типов значений. bool? - это псевдоним С# для типа .NET Nullable<bool> (таким же образом string является псевдонимом для string) и может содержать нулевые значения.