2008-12-17 7 views
0

Pourquoi ajouter un "||" OU entre 2 "! =" Ne fonctionne pas pour moi? Quand 'nom' est "test" ou "test2" mon instruction if ne fonctionne pas si j'ai utilisé 2 "! =" Mais si j'en utilise une seule, dites-moi pourquoi.C# Comment utiliser "||" en combinaison avec "! ="?

if (col.Name != "test" || col.Name != "test2") 
{ 
    MessageBox.Show("No" + col.Name.ToString()); //This shows "No test" and "No test2" 
} 
    else 
{ 
    MessageBox.Show("YES " + col.Name.ToString()); //does not reach here 
} 

cela fonctionne sans "||".

if (col.Name != "test") 
{ 
    MessageBox.Show("No" + col.Name.ToString()); 
} 
    else 
{ 
    MessageBox.Show("YES " + col.Name.ToString()); //Shows "YES test" 
} 

Merci à tous

Répondre

17

essayez ceci:

col.Name != "test" && col.Name != "test2" 

pense ... "si le numéro est 1 ou le numéro est 2" sera toujours vrai, puisque aucun numéro n'est à la fois 1 et 2 pour rendre les deux moitiés fausses. Maintenant, étendez ceci aux chaînes.

+0

Cela a fonctionné, grâce à la logique. URA * –

+0

Assurez-vous d'accepter la réponse de Dan pour lui donner les points de réputation qu'il mérite. –

7

Cela fonctionne, mais ce n'est pas ce que vous voulez.

col.Name != "test" || col.Name != "test2" 

retourne toujours vrai, car si col.Name est "test", il est pas "test2", vous avez donc "false || true" => true. Si col.Name est "test2", vous obtenez "true || false". Si c'est autre chose, il évalue à "true || true".

Je ne peux pas être sûr exactement ce que vous voulez faire, mais vous avez probablement besoin d'un et (&&) entre eux.

4

Vous devez faire un ET et non un OU :)

Code Pseudo:

si string1 pas le test d'égalité et non égale test2 que faire ...

Voici la version corrigée :

if (col.Name != "test" && col.Name != "test2") 
{ 
    MessageBox.Show("No" + col.Name.ToString()); //This shows "No test" and "No test2" 
} 
else 
{ 
    MessageBox.Show("YES " + col.Name.ToString()); //does not reach here 
} 
4

Vous utilisez OU, pensez à la table de vérité:

p   q  p || q 
true  true  true 
true  false  true 
false  true  true 
false  false  false 

Vous devez utiliser et pour le comportement désiré ...

Questions connexes