2014-10-03 57 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); 
} 
相关问题