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");