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.
5 Réponses :
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");
}
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.
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");
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
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
}
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
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");
}
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>
Pour la partie
(Taskinfo.DoRollOver! = "YES" || Taskinfo.DoRollOver! = "NO"), si vous donnez"YES", quel seraTaskinfo.DoRollOver! = "NON"? Vous avez raison, ce seravrai, doncfaux || vrai est vrai.DoRollOver est-il une énumération?