您是否经常使用代表并在自己的课程中声明自己的活动?

时间:2011-01-16 09:37:36

标签: .net events delegates

到目前为止,我已经使用.NET开发了一些软件系统。使用代理并在课堂上宣布我自己的事件很少发生在我身上。

我想知道我是否缺少一个强大的机制(代理和事件),或者他们并不经常使用。如果是,请解释1个不使用代表和事件就可以开发的场景。

谢谢。

1 个答案:

答案 0 :(得分:3)

代表大多只是表达行为的一种非常方便的方式。你可以通常通过声明单方法接口来实现相同的功能......但这通常会使用起来更加麻烦。 (特别是在通常将委托组合在一起的地方,使用lambda表达式创建它们或异步调用它们。)

我发现自己很少声明事件 - 但是在编写UI代码时经常使用。我使用代理的次数要多得多 - 例如,LINQ完全基于代理。

我不认为在没有代表的情况下提出绝对不能解决的问题真的很有用。考虑使用代表解决的最佳问题更有意义 - 这就是您需要能够表示行为的单一方面(对按钮按下,过滤器做出反应)的情况或者集合的投影,线程启动时采取的动作等)尽可能容易。

编辑:要扩展单方法界面注释,请想象一下这个界面:

public interface IEventHandler
{
    void HandleEvent(object sender, EventArgs args);
}

使用适当的支持类将多个IEventHandler实例组合成一个(将它们链接在一起)和一个表示“事件”的类型,您基本上可以实现EventHandler委托所做的事情。 ..但是以一种更难以使用的方式。