C# 处理事件

标签 c# events

当我处理设置事件时,我通常这样写:

data.event += new data.returndataeventhandler(method);

并有一个这样的方法:

void method(parameter)
{
   dosomething();
}

这是事件返回对象的时间。

我刚刚阅读了别人的代码,他们使用了一种似乎更简洁的方法,例如:

data.ReturnData += delegate(DataSet returnedDataSet)
                                    {
                                        dataset = returnedDataSet;
                                    };

这种方式有什么缺点吗?

谢谢。

最佳答案

使用匿名委托(delegate)(或者 tster 建议的更干净的 Lambda)的一个主要缺点是,除非您给它某种名称,否则您以后将无法从事件中取消订阅它。

在大多数情况下,这是“没什么大不了的(tm)”,因为只要事件源消失,委托(delegate)就会消失,但如果您订阅静态事件,这可能是一个“微妙的错误(tm)”或长期对象(例如 WPF Dispatcher 对象)上的事件。

就您而言,这看起来根本不是问题,因此我绝对建议您采用 tster 的建议(假设您使用的是最新版本的 .Net):

data.ReturnData += returnedDataSet => dataset = returnedDataSet;

(编译器可以从ReturnData的EventHandler类型推断出returnedDataSet的类型。)

关于C# 处理事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5405495/

相关文章:

c# - 如何减慢申请速度?

c# - 记住 WPF DataGrid 排序顺序

c# - 代码优先模型映射

javascript - 使用与 MVC PartialViewResult 签名匹配的对象动态填充 Ajax 数据属性

javascript - FullCalendar - ListView 多日事件未正确分组

oracle - Oracle 支持事件吗?

javascript - AngularJS $广播并隔离范围

c# - 为什么 MouseEnter 和 MouseLeave 不可靠?

c# - 使用 COM+ 在 MSXML 和 .Net 之间互操作

android - 试图弄清楚如何获取 Android 的触摸事件