2014-02-14 55 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

相關問題