Kek*_*Sha 5 c# linq lambda dynamic messagebox
private void SimpleLambda()
{
dynamic showMessage = x => MessageBox.Show(x);
showMessage("Hello World!");
}
Run Code Online (Sandbox Code Playgroud)
错误消息是:无法将lambda表达式转换为动态类型,因为它不是委托类型
任何帮助,
Jon*_*eet 16
这与MessageBox- 无关- 如错误消息所示,您根本无法将lambda表达式转换为,dynamic因为编译器不知道创建实例的委托类型.
你要:
Action<string> action = x => MessageBox.Show(x);
Run Code Online (Sandbox Code Playgroud)
或者甚至使用方法组转换,尽管那时你必须匹配返回类型:
Func<string, DialogResult> func = MessageBox.Show;
Run Code Online (Sandbox Code Playgroud)
然后,您可以dynamic根据需要使用:
dynamic showMessage = action; // Or func
showMessage("Hello World!");
Run Code Online (Sandbox Code Playgroud)
或者,您可以在显式委托实例表达式中指定lambda表达式:
dynamic showMessage = new Action<string>(x => MessageBox.Show(x));
Run Code Online (Sandbox Code Playgroud)
private void SimpleLambda()
{
Action<string> showMessage = x => MessageBox.Show(x);
showMessage("Hello World!");
}
Run Code Online (Sandbox Code Playgroud)