Ich versuche, eine switch-Anweisung zu schreiben, die den Suchbegriff in das Suchfeld eingibt, je nachdem, welches Suchtextfeld vorhanden ist. Ich habe den folgenden Code. Ich erhalte jedoch den Fehler "Kontrolle kann nicht von einem Falletikett durchfallen".
switch (searchType)
{
case "SearchBooks":
Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText);
Selenium.Click("//*[@id='SearchBooks_SearchBtn']");
case "SearchAuthors":
Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText);
Selenium.Click("//*[@id='SearchAuthors_SearchBtn']");
}
Die Kontrolle kann nicht von einem Falletikett (
case "SearchBooks":
) zum anderen durchfallenDie Kontrolle kann nicht von einem Falletikett (
case "SearchAuthors":
) zum anderen durchfallen
quelle
break
weil sie unter bestimmten Umständen durchfallen muss?!goto case "some String"
.Sie müssen sich
break;
,throw
,goto
, oderreturn
von jedem Ihrer Fall Etiketten. In einer Schleife können Sie auchcontinue
.Dies ist nur dann nicht der Fall, wenn die Falletiketten wie folgt gestapelt sind:
quelle
continue
ist auch möglichgoto case "SearchBooks";
das tun, was Sie tun müssen, ohne viel Ausdruckskraft zu verlieren oder unerwartete Fehler hinzuzufügen.Sie können mehr als nur in C # durchfallen, aber Sie müssen die "gefürchtete" goto-Anweisung verwenden. Beispielsweise:
quelle
Sie müssen eine break-Anweisung hinzufügen:
Dies setzt voraus , dass Sie die zu jedem Griff wollen
SearchBooks
Fall oder dieSearchAuthors
- wie Sie in, hätte von einem Fall Aussage auf die nächste Bedeutung , dass alle vier Zeilen Code „geplatzt“ in einer traditionellen Fluss C-Stil switch - Anweisung der Steuerung geschrieben in dem Fall ausgeführt werden, in demsearchType == "SearchBooks"
.Der angezeigte Compilerfehler wurde (zumindest teilweise) eingeführt, um den Programmierer vor diesem möglichen Fehler zu warnen.
Alternativ könnten Sie einen Fehler ausgelöst oder von einer Methode zurückgegeben haben.
quelle
Fügen Sie am Ende jedes Switch-Falls einfach die break-Anweisung hinzu, um dieses Problem wie folgt zu beheben:
quelle
Da dies in den anderen Antworten nicht erwähnt wurde, möchte ich hinzufügen, dass SearchAuthors direkt nach Abschluss des ersten Falls ausgeführt werden soll, genau wie dies der Fall ist, wenn die "Pause" in einigen anderen Programmiersprachen weggelassen wird wo das erlaubt ist, kannst du einfach "goto" verwenden.
quelle
Sie haben break-Anweisungen verpasst. Vergessen Sie nicht, break-Anweisungen auch im Standardfall einzugeben.
quelle
quelle
switch (ch)
Folgendes ändern .char vowelCheckChar = ( (Char.ToLower(ch) == 'y') ? ( ((new Random()).Next(2) == 0) ? ch : 'a' ) : ch ); // char vowelCheckChar = switch (vowelCheckChar)
Entschuldigung, musste. ;)