May*_*aya 140 c# switch-statement
我正在尝试编写一个switch语句,它将在搜索字段中键入搜索项,具体取决于存在的搜索文本框.我有以下代码.但我得到一个"控件无法从一个案例标签中掉头"的错误.请让我知道如何解决这个问题.提前致谢!
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']");
}
Run Code Online (Sandbox Code Playgroud)
控制不能从一个案例标签('case"SearchBooks":')转到另一个案例标签
控制不能从一个案例标签('case"SearchAuthors":')转移到另一个案例标签
Bol*_*ock 238
你错过了一些休息时间:
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;
}
Run Code Online (Sandbox Code Playgroud)
如果没有它们,编译器会认为您在执行下面case "SearchAuthors":的行之后立即执行下面的行case "SearchBooks":,这在C#中是不允许的.
通过break在每个案例结尾处添加语句,程序在完成后退出每个案例,无论哪个值searchType.
age*_*t-j 132
你需要break;,throw,goto,或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;
}
Run Code Online (Sandbox Code Playgroud)
唯一不合适的情况是案例标签堆叠如下:
case "SearchBooks": // no code inbetween case labels.
case "SearchAuthors":
// handle both of these cases the same way.
break;
Run Code Online (Sandbox Code Playgroud)
Dar*_*ola 27
你可以做的不仅仅是在C#中,但你必须使用"可怕的"goto语句.例如:
switch (whatever)
{
case 2:
Result.Write( "Subscribe" );
break;
case 1:
Result.Write( "Un" );
goto case 2;
}
Run Code Online (Sandbox Code Playgroud)
Jus*_*tin 14
您需要添加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;
}
Run Code Online (Sandbox Code Playgroud)
这是假设你想要么处理SearchBooks情况或在SearchAuthors-为你写的,在传统的C风格的switch语句的控制流会"跌穿"从一个case语句到下一个意思,所有的4行代码在这种情况下执行searchType == "SearchBooks".
您看到的编译器错误(至少部分地)被引入以警告程序员这个潜在的错误.
作为替代方案,您可能抛出错误或从方法返回.
在每个 switch case 的末尾,只需添加break-statement 即可解决此问题
switch (manu)
{
case manufacturers.Nokia:
_phanefact = new NokiaFactory();
break;
case manufacturers.Samsung:
_phanefact = new SamsungFactory();
break;
}
Run Code Online (Sandbox Code Playgroud)
你错过了break语句。break即使在这种情况下也不要忘记使用- 语句default。
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;
default:
Console.WriteLine("Default case handling");
break;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
213001 次 |
| 最近记录: |