当我写下我的代码时
Action(() => someCombobox.Text = "x" )
我收到此错误:
委托'
System.Action<object>
'不接受0参数
为什么呢?
此问题与this one有关。我只是想了解为什么会出现这种错误。
答案 0 :(得分:8)
您不必将其作为构造函数参数传递:
Action a = () => someCombobox.Text = "x";
您所要做的就是声明一个动作,然后使用lambda表达式来创建它。
或者,您可以将字符串传递给操作:
Action<string> a = (s) => someCombobox.Text = s;
a("your string here");
答案 1 :(得分:5)
如果您希望创建一个没有参数且未返回值的System.Action
委托,只需将您的代码更改为此,删除new Action([body])
:
Action newAction = () => someCombobox.Text = "x";
这是因为lambda表达式将为您返回一个新的无参数System.Action
委托。编辑:如Aliostad所述,() => someCombobox.Text = "x"
将返回lambda表达式或Action
,具体取决于您为其指定的变量的类型。
答案 2 :(得分:0)
我认为这里的答案与您链接到的相关问题中的答案相同:.NET 2.0只有一个带有参数的Action委托的定义。
无参数的Action委托在.NET 3.5中添加,需要引用System.Core。