2009-09-05 3 views
0

En C#, par exemple, quand je compare deux booléens nullables (bool?) j'obtenir les résultats suivants:Comment déterminer le résultat d'un opérateur logique sur des booléens Nullable?

true & null = null 
false & null = false 
true | null = true 
false | null = null 

Le problème est que je ne pouvais pas comprendre comment ces résultats viennent, ce qui est la règle que je peux utiliser pour déterminer le résultat d'un opérateur logique sur deux booléens, quand l'un d'entre eux est nul?

Répondre

11

L'idée est que "null" signifie "inconnu" ici, ou "pas assez d'informations". Donc, si la réponse dépend de la valeur inconnue, la réponse elle-même est inconnue. Si la réponse est la même quelle que soit la valeur inconnue (par exemple, true | null), alors vous êtes toujours d'accord.

penser de cette façon:

y = true & x; // the result will be the same as the value of x (it depends on x) 
y = true | x; // the result will be true whatever x is 
+0

Merci, je comprends que maintenant! –

+0

Je pense que vous vouliez dire 'il doit être x' au lieu de' il doit être vrai' sur le premier commentaire, c'est-à-dire que ce sera x. – GDS

+0

@GDS: Eh bien, je voulais dire "x doit être vrai pour y être vrai" vraiment, mais je vais modifier pour plus de clarté. –

Questions connexes