使用 lambda 和事件在 C# 中使用技巧
Trick in C# with lambda and event
我想知道是否有办法完成这样的事情:
Button button = new Button() { OnClick += (sender, e) => MessageBox.Show("hello") };
但它不想工作:D 我想创建一个控件并同时向它添加一个事件。可能吗?
您可以't.You只能在对象初始化程序中初始化属性和字段。您需要单独附加活动。
不,不幸的是,对象初始值设定项不允许您附加事件处理程序。
C# 团队意识到了这一限制 - 曾希望这会出现在 C# 6 中,但该功能已被删除。我希望它是因为时间不够而不是真的失去了这个特性而被放弃了——也许我们会在 C# 7 中看到它。
虽然你不能用对象初始值设定项来做到这一点,但你可以这样做:
Func<EventHandler, Button> newButtonWithClick = h =>
{
Button b = new Button();
b.Click += h;
return b;
};
Button button = newButtonWithClick((sender, e) => MessageBox.Show("hello"));
我想知道是否有办法完成这样的事情:
Button button = new Button() { OnClick += (sender, e) => MessageBox.Show("hello") };
但它不想工作:D 我想创建一个控件并同时向它添加一个事件。可能吗?
您可以't.You只能在对象初始化程序中初始化属性和字段。您需要单独附加活动。
不,不幸的是,对象初始值设定项不允许您附加事件处理程序。
C# 团队意识到了这一限制 - 曾希望这会出现在 C# 6 中,但该功能已被删除。我希望它是因为时间不够而不是真的失去了这个特性而被放弃了——也许我们会在 C# 7 中看到它。
虽然你不能用对象初始值设定项来做到这一点,但你可以这样做:
Func<EventHandler, Button> newButtonWithClick = h =>
{
Button b = new Button();
b.Click += h;
return b;
};
Button button = newButtonWithClick((sender, e) => MessageBox.Show("hello"));