論理型は通常trueとfalseの2つの値を取ります。2値です。
ところが、実際には3値を取る論理型というのがあります。
true, false, null(値の不在)を示すもので、SQL等でnullを許容するboolを指定すると3値論理型になります。この値をC#で直接受け取ることができるデータ型がbool?ということになります。
では、4値論理型はあるのでしょうか?
実はあったのですねえ。
考えてみれば当たり前。
ある演算の結果がtrueとfalseのどちらかに決まるとは断言できません。不定という解も正当な回答の内です。しかし、「不定」はまだ演算が行われていない「未定」とは位置づけが違います。「未定」は、将来の演算で値が確定する可能性を含みますが、「不定」とは既に値が確定しないことが決まってしまった結果です。だから「不定」を含む論理演算と「未定」を含む論理演算は同じ結果になるとは限りません。
だから、{ true, false, null, indef }と言う4値論理型があっても良いわけですね。
なぜindefはあり得るか §
実は浮動小数点の計算ではNaN(Not a Number)という結果が出てくる場合があります。だから、nullを許容する実数の場合、結果は「値として表現できる全ての数+null+NaN」が結果としてあり得る数です。つまり、「値として表現できる全ての数の種類+2」があり得るバリエーションです。これをboolに適用するとtrueとfalseの2種類が「値として表現できる全ての数」なので、2+2=4となり、4値型があり得ます。