Estou tentando escrever uma declaração de opção que digite o termo de pesquisa no campo de pesquisa, dependendo da caixa de texto de pesquisa presente. Eu tenho o seguinte código. Mas estou recebendo o erro "O controle não pode ser eliminado de um rótulo de caso".
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']");
}
O controle não pode passar de um rótulo de caso (
case "SearchBooks":
) para outroO controle não pode passar de um rótulo de caso (
case "SearchAuthors":
) para outro
fonte
break
porque precisa cair em algumas circunstâncias ?!goto case "some String"
.Você precisa
break;
,throw
,goto
, oureturn
de cada um dos seus casos etiquetas. Em um loop, você também podecontinue
.A única vez que isso não é verdade é quando os rótulos dos casos são empilhados assim:
fonte
continue
também é possívelgoto case "SearchBooks";
você tenha a capacidade de fazer o que precisa sem perder muita expressividade ou adicionar bugs inesperados.Você pode fazer mais do que apenas cair em c #, mas você deve utilizar a instrução goto "dreaded". Por exemplo:
fonte
Você precisa adicionar uma declaração de quebra:
Isso pressupõe que você deseja manipular o
SearchBooks
caso ou oSearchAuthors
- como você havia escrito, em uma instrução de opção tradicional no estilo C - o fluxo de controle "passaria" de uma instrução de caso para a próxima, o que significa que todas as 4 linhas de código ser executado no caso em quesearchType == "SearchBooks"
.O erro do compilador que você está vendo foi introduzido (pelo menos em parte) para avisar o programador sobre esse erro em potencial.
Como alternativa, você poderia ter gerado um erro ou retornado de um método.
fonte
No final de cada caso de switch, basta adicionar a instrução break para resolver esse problema como este-
fonte
Como não foi mencionado nas outras respostas, gostaria de acrescentar que, se você deseja que o SearchAuthors do caso seja executado logo após a conclusão do primeiro caso, assim como ocorre ao omitir a "interrupção" em outras linguagens de programação onde isso for permitido, você pode simplesmente usar "ir".
fonte
Você perdeu instruções de interrupção. Não se esqueça de inserir a declaração de interrupção, mesmo no caso padrão.
fonte
fonte
switch (ch)
para o seguinte.char vowelCheckChar = ( (Char.ToLower(ch) == 'y') ? ( ((new Random()).Next(2) == 0) ? ch : 'a' ) : ch ); // char vowelCheckChar = switch (vowelCheckChar)
Desculpe, tive que. ;)