Pourquoi est-ce code de jeter une exception InvalidOperationException?
Je pense que mon code doit faire l' ViewBag.test
bien égal à "No Match"
, mais au lieu de cela, il jette un InvalidOperationException
.
Pourquoi est-ce?
string str = "Hello1,Hello,Hello2";
string another = "Hello5";
string retVal = str.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
.First(p => p.Equals(another));
if (str == another)
{
ViewBag.test = "Match";
}
else
{
ViewBag.test = "No Match"; //this does not happen when it should
}
Le code renvoie au Système.InvalidOperationException au lieu d'afficher "Aucun Match" sur la page.
Il n'a pas d' retour
.(Première) se jette sur elle, si il n'y a pas un match, essayez FirstOrDefault() et vérifier la valeur null
Il n'a pas d' retour
InvalidOperationException
, il le jette. Principalement parce que il n'y a pas de chaîne dans la liste qui est égal à "Hello5". De quoi êtes-vous tring à accomplir?.(Première) se jette sur elle, si il n'y a pas un match, essayez FirstOrDefault() et vérifier la valeur null
OriginalL'auteur user2398766 | 2013-05-19
Vous devez vous connecter pour publier un commentaire.
Comme vous pouvez le voir ici, le
First
méthode déclenche uneInvalidOperationException
lors de la séquence sur laquelle il est appelé est vide. Puisque aucun élément du résultat de la division est égal àHello5
, le résultat est une liste vide. À l'aide deFirst
sur cette liste permettra de lancer l'exception.Envisager d'utiliser
FirstOrDefault
, au lieu (documenté ici), qui, au lieu de lancer une exception lorsque la séquence est vide, renvoie la valeur par défaut pour le type de l'énumération. Dans ce cas, le résultat de l'appel seranull
, et vous devriez vérifier pour que dans le reste du code.Il pourrait être plus propre encore à utiliser le
Any
méthode Linq (documenté ici), qui renvoie unbool
.Et maintenant obligatoire d'un liner à l'aide de la opérateur ternaire:
Noter que j'ai aussi utilisé
==
ici pour comparer des chaînes, qui est considérée comme la plus idiomatique en C#.J'ai interprété la question, telle qu'il ou elle cherche à mettre en
ViewBag.test
de "Match" lorsque la variablestr
contient la variableanother
entre les virgules, et les "Aucun Match" dans le cas contraire. Est-ce ce que vous vouliez dire, @user2398766?Je suis d'accord avec cela, mais je ne peux pas dire!
Oui, merci beaucoup.
OriginalL'auteur Ben Reich
Donner un coup de cette:
OriginalL'auteur Dimitar Dimitrov