控制不能通过一个案例标签
我正在尝试编写一个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(); } } }