Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 新操作(()=>;someCombobox.Text=";x";有什么问题_C#_Lambda - Fatal编程技术网

C# 新操作(()=>;someCombobox.Text=";x";有什么问题

C# 新操作(()=>;someCombobox.Text=";x";有什么问题,c#,lambda,C#,Lambda,当我写代码时 Action(() => someCombobox.Text = "x" ) 我得到这个错误: 委托“System.Action”不接受0个参数 为什么? 这个问题涉及到。我只想了解发生此错误的原因。如果您希望创建一个没有参数且不返回值的System.Action委托,只需将代码更改为此,删除新操作([body]): 这是因为lambda表达式将为您返回一个新的无参数System.Action委托。编辑:如所述,()=>someCombobox.Text=“x”将返回lam

当我写代码时

Action(() => someCombobox.Text = "x" )
我得到这个错误:

委托“
System.Action
”不接受0个参数

为什么?


这个问题涉及到。我只想了解发生此错误的原因。

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

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


编辑:如Darin所说,如果希望它接受参数,则在创建lambda表达式时需要传入该参数。

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

 Action a = () => someCombobox.Text = "x";
您所要做的就是声明一个操作,然后使用lambda表达式来创建它

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

  Action<string> a = (s) => someCombobox.Text = s;
  a("your string here");
Action a=(s)=>someCombobox.Text=s;
a(“你的绳子在这里”);

我认为这里的答案与您链接到的相关问题中的答案相同:.NET 2.0仅对带有参数的操作委托进行了定义


无参数操作委托是在.NET 3.5中添加的,需要对System.Core的引用。

可能与@DanSeaver重复:不完全是重复,因为我相信在.NET 3.5及更高版本中答案不同。也就是说,下面的答案在这个问题上是无效的(或者至少没有给出),或者可能是:
(()=>someCombobox.Text=“x”)()(这似乎有点毫无意义)。@MatthewAbbott很好我假设了这个作业,我现在编辑了我的答案虚拟-1<代码>这是因为lambda表达式将返回一个新的无参数系统。操作委托
这在技术上是错误的。它可以返回lambda表达式或操作,具体取决于您定义的变量。@JamesShuttler Updated comment:-)@aliostat这是真的,我假设表达式的结果被分配给了
操作
委托
  Action<string> a = (s) => someCombobox.Text = s;
  a("your string here");