-3

我使用if语句与switch语句得到不同的结果。

这段代码可以识别我是否说“你好”,如果是,那么它会回复“你好”:

if (e.Result.Text == "Hello")
{
    JARVIS.Speak("Hello");
}

这个switch语句应该做同样的事情:

string speech = e.Result.Text;

switch (speech)
{
    case "hello":
        JARVIS.Speak("Hello");
        break;
}

为什么在if语句中,我可以在“你好”之前/之后说任何话(例如“你好”),它仍然会识别并回复,而在case语句中如果你在 / 前面说任何单词在“你好”之后它不会识别并回复?

4

1 回答 1

2

if语句和语句的行为case不同,因为它们中有不同的值:

if (e.Result.Text == "Hello")
{
   JARVIS.Speak("Hello"); // This will be executed if e.Result.Text is "Hello"
}

Where-as switch 语句(来自您的评论的代码):

string speech = e.Result.Text;
switch (speech)
{
   case "hello":
      JARVIS.Speak("Hello"); // This will be executed if e.Result.Text is "hello"
      break;
}

在 C# 中,“Hello”和“hello”是两个不同的值。

.ToLower()一种解决方案是调用e.Result.Text

string speech = e.Result.Text.ToLower();

于 2013-08-04T01:33:04.400 回答