CSharp - 在 messagebox.show 中,C# Lambda匿名方法

  显示原文与译文双语对照的内容
73 0

我正在玩匿名方法,我想知道为什么这个代码不会编译。Messagebox显示一个字符串,我正在尝试返回字符串。

 MessageBox.Show(() => 
 {
 if (button1.Text =="button1")
 {
 return"ok";
 }
 else
 {
 return"not button1 text";
 }
 });

无法将lambda表达式转换为类型字符串,因为它不是委托类型。

谁能解释为什么我错过了一个演员?

时间:原作者:0个回答

109 3

你的代码是定义一个返回字符串( Func<string> )的Func然后你尝试把 Func<string> 作为一个参数传递给 MessageBox.Show请注意,MessageBox.Show 不接受 Func<string> 类型,它接受 string,因这里不能以这种方式传递lamda表达式。但你可以这样做:

Func<string> yourFunc = () => 
 {
 if (button1.Text =="button1")
 {
 return"ok";
 }
 else
 {
 return"not button1 text";
 }
 };
MessageBox.Show(yourFunc());
原作者:
...