我使用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
陈述中,如果你在“你好”之前/之后说出任何话,它将无法识别并回复?
答案 0 :(得分:2)
if
语句和case
语句的行为有所不同,因为它们中包含不同的值:
if (e.Result.Text == "Hello")
{
JARVIS.Speak("Hello"); // This will be executed if e.Result.Text is "Hello"
}
其中 - 作为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()
;