控制不能通过一个案例标签

我正在尝试编写一个switch语句,在search字段中inputsearch词,具体取决于任何search文本框。 我有以下代码。 但是我得到一个“控制不能从一个案例标签”的错误。 请让我知道如何解决这个问题。 提前致谢!

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']"); } 

控制不能从一个案例标签('case“SearchBooks:')到另一个案例

控制不能从一个案例标签(“case”SearchAuthors“:”)到另一个案例标签

你错过了一些rest:

 switch (searchType) { case "SearchBooks": Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText); Selenium.Click("//*[@id='SearchBooks_SearchBtn']"); break; case "SearchAuthors": Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText); Selenium.Click("//*[@id='SearchAuthors_SearchBtn']"); break; } 

如果没有它们,编译器会认为你正在尝试执行case "SearchAuthors":下面的行:在case "SearchBooks":的行之后立即执行,这在C#中是不允许的。

通过在每个案例的末尾添加break语句,程序在完成后退出每个case,取任何一个searchType值。

你需要break;throw ,转,或从每个案件标签return 。 在循环中,你也可以continue

  switch (searchType) { case "SearchBooks": Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText); Selenium.Click("//*[@id='SearchBooks_SearchBtn']"); break; case "SearchAuthors": Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText); Selenium.Click("//*[@id='SearchAuthors_SearchBtn']"); break; } 

唯一不是这样的情况是,箱子标签是这样堆放的:

  case "SearchBooks": // no code inbetween case labels. case "SearchAuthors": // handle both of these cases the same way. break; 

你需要添加一个break语句:

 switch (searchType) { case "SearchBooks": Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText); Selenium.Click("//*[@id='SearchBooks_SearchBtn']"); break; case "SearchAuthors": Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText); Selenium.Click("//*[@id='SearchAuthors_SearchBtn']"); break; } 

这假设你想要处理SearchBooks案例或者 SearchAuthors就像你写的那样,在一个传统的C风格的switch语句中,控制stream从一个case语句到下一个意思是“所有4行的代码在searchType == "SearchBooks"的情况下得到执行。

你看到的编译器错误是引入(至less部分)来警告程序员这个潜在的错误。

作为替代,你可能会抛出一个错误或从一个方法返回。

你可以做的不仅仅是在C#中完成,但是你必须使用“可怕的”goto语句。 例如:

 switch (whatever) { case 2: Result.Write( "Subscribe" ); break; case 1: Result.Write( "Un" ); goto case 2; } 
 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Case_example_1 { class Program { static void Main(string[] args) { Char ch; Console.WriteLine("Enter a character"); ch =Convert.ToChar(Console.ReadLine()); switch (ch) { case 'a': case 'e': case 'i': case 'o': case 'u': case 'A': case 'E': case 'I': case 'O': case 'U': Console.WriteLine("Character is alphabet"); break; default: Console.WriteLine("Character is constant"); break; } Console.ReadLine(); } } }