2014-02-14 54 views
-1

以及我有这个代码。将参数添加到事件处理程序。

recognizer.SpeechRecognized += 
         new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized); 


static void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) 
     { 
      if (e.Result != null && e.Result.Text != null) 
      { 

       Console.WriteLine(" Recognized text = {0}", e.Result.Text); 
       File.WriteAllText("text/text.txt", e.Result.Text); 
      } 
      else 
      { 
       Console.WriteLine(" Recognized text not available."); 
      } 
     } 

我想添加一个参数,以我的代码中加入说的myData在功能表现,这样我可以打印也与文本。

回答

0

修改为接受的说法(S)的方法,你实际上需要:

static void recognizer_SpeechRecognized(
    SpeechRecognizedEventArgs e, string myData) 

然后使用lambda分配事件处理程序,以及相应的参数传递,并关闭了你拥有的任何数据:

string myData = "hello world"; 
recognizer.SpeechRecognized += 
    (s, args) => recognizer_SpeechRecognized(args, myData); 
+0

请详细说明。我是新来的C# – Adeel

+0

@Adeel你需要什么阐述?你不了解什么部分? – Servy

+0

第二部分,我分配lambda分配事件处理程序。 – Adeel

0

您可以考虑将myData作为具有此处理程序的类中的字段。并使这个处理程序非静态。

我不会建议盗用你的方式并通过myData与处理程序。

+0

该方法可能是一个明智的理由是静态的。也许事件处理程序也是从静态上下文中附加的。这也创造了一个变量,程序员需要关注被整个班级其他地方操纵的变量,而不是将其范围局限于只在需要的地方。最后,直接传递数据而不是创建字段,更容易编程,而绝不是破解,更好的设计,更容易编码,更有效。 – Servy

相关问题