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

本文关键字:Speech Result Text 字符串 代码 访问 检测 | 更新日期: 2023-09-27 18:27:06

我有这个问题:

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 

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

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

您需要关闭开关

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

我认为发生此错误是因为您没有像在图像上显示的那样关闭switch语句。由于发生这种情况是因为switc,所以您发布的代码无关紧要。

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

来自文件;

开始执行所选开关部分中的语句列表使用第一语句并继续语句列表,通常直到跳转语句,如break、goto-case、return,或投掷达到。此时,控制权转移到外部switch语句或另一个case标签。

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

从屏幕截图中,它显示您已将代码放在break之后,因此这些行将不会执行,因为break之后的所有代码都将被跳过,这就是它显示Unreachable code的原因。

因此,您需要将break放在这些代码块之后,或者删除这些代码块并放在switch-case之后。