新Action有什么问题(()=> someCombobox.Text ="x")

Bas*_*mme 4 c# lambda

当我写我的代码

Action(() => someCombobox.Text = "x" )
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

代表' System.Action<object>'不带0个参数

为什么?

这个问题关系到这一个.我只想了解为什么会出现这种错误.

Ali*_*tad 8

您不必将其作为构造函数参数传递:

 Action a = () => someCombobox.Text = "x";
Run Code Online (Sandbox Code Playgroud)

您所要做的就是声明一个动作,然后使用lambda表达式来创建它.

或者,您可以将字符串传递给操作:

  Action<string> a = (s) => someCombobox.Text = s;
  a("your string here");
Run Code Online (Sandbox Code Playgroud)


Jam*_*ler 5

如果您希望创建一个System.Action没有参数且不返回值的委托,只需将代码更改为此,删除new Action([body]):

Action newAction = () => someCombobox.Text = "x";
Run Code Online (Sandbox Code Playgroud)

这是因为lambda表达式将为您返回一个新的无参数System.Action委托.编辑:如Aliostad所述,() => someCombobox.Text = "x"将返回lambda表达式或一个Action,取决于您为其分配的变量的类型.

编辑:正如Darin所说,如果你希望它接受一个参数,那么你需要在创建lambda表达式时传递它.