MethodInvoke 委托或 lambda 表达式
两者有什么区别?
Invoke((MethodInvoker) delegate {
checkedListBox1.Items.RemoveAt(i);
checkedListBox1.Items.Insert(i, temp + validity);
checkedListBox1.Update();
}
);
vs
Invoke((MethodInvoker)
(
() =>
{
checkedListBox1.Items.RemoveAt(i);
checkedListBox1.Items.Insert(i, temp + validity);
checkedListBox1.Update();
}
)
);
有什么理由使用 lambda 表达式吗? (MethodInvoker)
是否将委托和 lambda 转换为 MethodInvoker 类型?什么样的表达式不需要 (MethodInvoker)
强制转换?
What is the difference between the two?
Invoke((MethodInvoker) delegate {
checkedListBox1.Items.RemoveAt(i);
checkedListBox1.Items.Insert(i, temp + validity);
checkedListBox1.Update();
}
);
vs
Invoke((MethodInvoker)
(
() =>
{
checkedListBox1.Items.RemoveAt(i);
checkedListBox1.Items.Insert(i, temp + validity);
checkedListBox1.Update();
}
)
);
Is there any reason to use the lambda expression? And is (MethodInvoker)
casting delegate and lambda into type MethodInvoker? What kind of expression would not require a (MethodInvoker)
cast?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
1) lambda 表达式更短、更清晰
2) 是
3) 您可以使用 Action 类型,如下所示:
1) The lambda expression is somewhat shorter and cleaner
2) Yes
3) You could use the Action type, like this:
这两种方法是等效的。第一个称为匿名方法,是早期的 .net 2.0 功能。 lambda 不应该需要强制转换。
我更喜欢 lambda,因为它在现代 C#/.net 开发中具有更普遍的用途。匿名委托不会通过 lambda 提供任何内容。 lambda 允许类型推断,在某些情况下,类型推断从方便到必要。
The two approaches are equivalent. The first is known as an anonymous method, and is an earlier .net 2.0 capability. The lambda should not require a cast.
I would prefer the lambda, because it has more ubiquitous use in modern C#/.net development. The anonymous delegate does not offer anything over the lambda. The lambda allows type inference, which ranges from convenient to necessary in some cases.
MethodInvoker 提供了一个简单的委托,用于调用带有 void 参数列表的方法。当调用控件的 Invoke 方法时,或者当您需要一个简单的委托但不想自己定义一个委托时,可以使用此委托。
另一方面,一个 Action 最多可以有 4 个参数。
MethodInvoker provides a simple delegate that is used to invoke a method with a void parameter list. This delegate can be used when making calls to a control's Invoke method, or when you need a simple delegate but do not want to define one yourself.
an Action on the other hand can take up to 4 parameters.