C# 方法“”的重载不接受0个参数
我对rec.speechrecognized+=rec_Speachrecognized中的代码有问题 我一直在互联网上寻找答案,但它就是不起作用。我希望有人能帮助我C# 方法“”的重载不接受0个参数,c#,visual-studio-2010,C#,Visual Studio 2010,我对rec.speechrecognized+=rec_Speachrecognized中的代码有问题 我一直在互联网上寻找答案,但它就是不起作用。我希望有人能帮助我 namespace ai { public partial class Form1 : Form { SpeechSynthesizer s = new SpeechSynthesizer(); Choices list = new Choice {}; publi
namespace ai
{
public partial class Form1 : Form
{
SpeechSynthesizer s = new SpeechSynthesizer();
Choices list = new Choice {};
public Form1()
{
SpeechRecognitionEngine rec = new SpeechRecognitionEngine();
list.Add(new String[] {"Hello", "how are you"});
Grammar gr = new Grammar(new GrammarBuilder(list));
try
{
rec.RequestRecognizerUpdate();
rec.LoadGrammar(gr);
rec.SpeechRecognized += rec_Speachrecognized();
rec.SetInputToDefaultAudioDevice();
rec.RecognizeAsync(RecognizeMode.Multiple);
}
catch{return;}
s.Speak("Hi, I am Ms M, what can i help you?");
InitializeComponent();
}
public void Say(String h)
{
s.Speak(h);
}
private EventHandler<SpeechRecognizedEventArgs> rec_Speachrecognized(object sender, SpeechRecognizedEventArgs e)
{
string r = e.Result.Text;
if(r == "hello")
{
Say("hi");
}
throw new NotImplementedException();
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
你需要换一行
rec.SpeechRecognized += rec_Speachrecognized();
到
基本上在末尾删除,因为事件将传递参数,但这样您调用的方法没有参数我强烈怀疑rec.SpeechRecognized+=rec_Speachrecognized;应该是rec.SpeechRecognized+=rec_Speachrecognized;-您希望从该方法创建委托,而不是调用它。请删除括号:rec.SpeechRecognized+=rec_Speachrecognized;rec.speechrecogned+=rec_speachrecogned和not rec.speechrecogned+=rec_speachrecogned;更准确地说,这是一个代表,而不是一个function@styx:在的上下文中,但通过这种方式,您调用的函数没有参数,它不是委托。不可否认,这是一种方法,而不是一种函数…@JonSkeet像往常一样right@JonSkeet是的,函数是我想到的第一件事,当我发布这篇文章时,我正在编写一些javascript并编写funciton blabla:。Thnx用于校正
rec.SpeechRecognized += rec_Speachrecognized;