1
votes

Besoin de vérifier la condition si la valeur est «OUI» ou «NON». Et pour les valeurs invalides, il devrait lancer un message d'erreur

Voici le code que j'ai essayé:

  if(!string.IsNullOrEmpty(Taskinfo.DoRollOver) &&(Taskinfo.DoRollOver != "YES" || Taskinfo.DoRollOver != "NO"))
  {
     throw new DataException("DoRollOver is not valid");
  }

Mais si j'essaye de donner les données valides telles que OUI ou NON code > il lève toujours une exception.


2 commentaires

Pour la partie (Taskinfo.DoRollOver! = "YES" || Taskinfo.DoRollOver! = "NO") , si vous donnez "YES" , quel sera Taskinfo.DoRollOver! = "NON" ? Vous avez raison, ce sera vrai , donc faux || vrai est vrai .


DoRollOver est-il une énumération?


5 Réponses :


2
votes

Cette condition est toujours vraie. Si Taskinfo.DoRollOver est "OUI", il n'est pas égal à "NON", et vice-versa. Vous devez utiliser l'opérateur logique && , pas l'opérateur logique || :

if (string.IsNullOrEmpty(Taskinfo.DoRollOver) ||
    (Taskinfo.DoRollOver != "YES" && // Here!
     T0askinfo.DoRollOver != "NO"))
{
    throw new DataException("DoRollOver is not valid");
}


2 commentaires

Oui, cela fonctionne pour les données valides OUI ou NON mais si j'essaie de donner les valeurs NULL ou vides, cela lève une exception.


@Yathishkumar J'ai enculé la négation là-bas. Voir ma réponse modifiée.



1
votes

Dans un souci de lisibilité et de simplicité, je diviserais les conditions:

if(Taskinfo.DoRollOver == "YES")
{
  // do smoething
}
else if(Taskinfo.DoRollOver == "NO")
{
  // do smoething else
}
else
  throw new DataException("DoRollOver is not valid");


1 commentaires

Cela ne fonctionnera pas, voir le commentaire de OP sur la réponse de @ Mureinik: Oui, cela fonctionne pour les données valides OUI ou NON mais si j'essaie de donner les valeurs NULL ou vides, cela lève une exception



1
votes

peut-être que cela peut vous aider

 if(!string.IsNullOrEmpty(Taskinfo.DoRollOver))
  {
    if(Taskinfo.DoRollOver != "YES" && Taskinfo.DoRollOver != "NO")
      {
       throw new DataException("DoRollOver is not valid");
      }
  }else
  {
    //Do Something
  }


2 commentaires

Cela ne fonctionnera pas, voir le commentaire de OP sur la réponse de @ Mureinik: Oui, cela fonctionne pour les données valides OUI ou NON mais si j'essaie de donner les valeurs NULL ou vides, cela lève une exception


non, ce ne sera pas le cas, vous avez d'abord vérifié que si la valeur n'est pas vide ou nulle, si la valeur est vide ou nulle, elle entre dans autre chose que vous devez gérer si elle est nulle ou vide



1
votes

Essayez de modifier des conditions comme celle-ci

if (string.IsNullOrEmpty(Taskinfo.DoRollOver) ||(Taskinfo.DoRollOver != "YES" && T0askinfo.DoRollOver != "NO"))
{
    throw new DataException("DoRollOver is not valid");
}


0 commentaires

1
votes

Je dirais que vous avez un peu inversé la logique.

if((Taskinfo.DoRollOver == "YES")||(Taskinfo.DoRollOver == "NO"))
{
  // do something
}
else
  throw new DataException("DoRollOver is not valid");

Aussi si TaskInfo.DoRollOver est une chaîne, j'utiliserais TaskInfo.DoRollOver.ToUpper () - juste au cas où. p>


0 commentaires