Ho posto questa domanda su Stack Overflow ed è stata accolta con una ricezione negativa. Ho pensato che Stack Overflow non era il posto giusto per porre questa domanda, quindi ho deciso di postarlo qui.
 Oltre a fare tipi come   SqlBoolean    agire in modo più naturale, c'è qualche altra ragione? Se la creazione di tre tipi booleani di stato è l'unico scopo di questa decisione, è una buona ragione per aggiungere una funzionalità che è usata così raramente in una lingua? 
Ecco un esempio:
public class ThreeStateBool
{
    private bool? value;
    public ThreeStateBool(bool? value)
    {
        this.value = value;
    }
    public static bool operator false(ThreeStateBool tsb)
    {
        return tsb.value == false;
    }
    public static bool operator true(ThreeStateBool tsb)
    {
        return tsb.value == true;
    }
}
 Ora che ho sovraccaricato   true    e   false   , posso usare questo oggetto in un'istruzione condizionale come: 
if (new ThreeStateBool(false))
    Console.WriteLine("false");
else if (new ThreeStateBool(true))
    Console.WriteLine("true");
else if(new ThreeStateBool(null))
    Console.WriteLine("null");