检测到无法访问的代码字符串Speech = e.Result.Text;

时间:2014-10-19 13:26:52

标签: c#

我有这个问题:

http://s28.postimg.org/x8gb3pvkb/Capture.png 这是通过语音的谷歌搜索代码:

string Speech = e.Result.Text;
if (Speech == "I WANT TO SEARCH SOMETHING")
  {
    QEvent = Speech;
    JARVIS.SpeakAsync("what do you want to search");
    Speech = string.Empty;
  }
 else if (Speech != string.Empty && QEvent == "I WANT TO SEARCH SOMETHING")
   {
       System.Diagnostics.Process.Start("http://google.com/search?q=" + Speech);
     QEvent = string.Empty;

     ranNum = rnd.Next(1, 4);
     if (ranNum == 1) { JARVIS.SpeakAsync("Alright, I am searching " + Speech + " in google"); }
     else if (ranNum == 2) { JARVIS.SpeakAsync("ok sir, I am searching " + Speech); }
     else if (ranNum == 3) { JARVIS.SpeakAsync("Alright, I am searching "); }
     Speech = string.Empty;

   }

错误列表中显示此错误:

Unreachable code Detected 

你能告诉我为什么这是无法访问的代码吗?

3 个答案:

答案 0 :(得分:0)

你需要关闭开关

switch (caseSwitch)
{
    case "open":
        SendKeys.Send("{ENTER}");
        break;
    default:
        //do something 
        break;
}
string Speech = e.Result.Text;

答案 1 :(得分:0)

我认为发生此错误是因为您没有按照图片上显示的那样关闭switch语句。由于这是因为swithc而发生的,因此您发布的代码无关紧要。

您在break;中使用case: "Open",无法访问string Speech = e.Result.Text;行。

来自documentation;

  

开始执行所选开关部分中的语句列表   用第一个语句并通过语句列表继续,   通常直到跳转语句,例如休息,转到大小写,返回,   或扔掉,到达。此时,控制权转移到外部   switch语句或另一个案例标签。

switch (expr)
{
    ...
    case "Open":
         SendKeys.Send("{ENTER}");
         break;
}
string Speech = e.Result.Text;

答案 2 :(得分:0)

从屏幕截图中可以看出,您已将代码放在break之后,因此不会执行这些行,因为break之后的所有代码都会被跳过,这就是显示{{1}的原因}}

因此,您需要将Unreachable code放在这些代码块之后,或删除这些代码块并放在break之后。