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");