C# 方法“”的重载不接受0个参数

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

我对rec.speechrecognized+=rec_Speachrecognized中的代码有问题

我一直在互联网上寻找答案,但它就是不起作用。我希望有人能帮助我

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;