2014-10-03 120 views
0

我想用單個參數調用一個函數。我想通過Action Delegate調用它,但得到錯誤消息「不是所有的代碼路徑都返回一個值」。錯誤:行動委託「不是所有的路徑返回值」

我試過了,我可以用無參數功能來做到這一點。我

{ 
.... //Getting string from the selected item in ListBox. 
Dispatcher.BeginInvoke(new Action<string>(displayText(myTextBlock.Text))); 
} 

private Action<string> displayText(string p) 
    { 
     MessageBox.Show(p); 
    } 

你能幫我。

+0

你'displayText'方法不返回'行動'。 – 2014-10-03 03:42:45

+0

我想要做的就是調用一個沒有返回值的參數化函數。使用我的上述過程,我只能創建Action或Func對象,並選擇Action,因爲在我的代碼中,我不需要返回值。有什麼建議麼 ? – user3571361 2014-10-03 03:51:33

+0

謝謝,我明白了你的觀點。 – user3571361 2014-10-03 04:31:12

回答

0

您的displayText聲明表示它接受一個字符串並返回一個Action。編譯器期望你在該函數中返回一個Action,但你所做的只是顯示一個消息框。如果您打算做的只是顯示消息框,將該返回類型更改爲void將消除編譯器錯誤。

+0

我也嘗試將我的函數類型更改爲Void,但編譯器顯示錯誤「方法名稱預期」。我所要做的就是調用一個沒有返回值的參數化函數。使用我的上述過程,我只能創建Action或Func對象,並選擇Action,因爲在我的代碼中,我不需要返回值。有什麼建議麼 ? – user3571361 2014-10-03 03:48:58

+0

非常感謝。 – user3571361 2014-10-03 04:31:31

+0

@ user3571361 - 你真的使用過'Void'(大寫字母V)還是它是'void'(小寫字母v)? C#只會理解小寫版本。 – 2014-10-03 08:48:02

1

如果displayText只是顯示一個MessageBox它不需要任何回報:

Dispatcher.BeginInvoke(new Action(() => displayText(myTextBlock.Text))); 

private void displayText(string p) 
{ 
    MessageBox.Show(p); 
}