在java中,很多类都支持监听回调,我认为是观察者模式。但是 nc#,我没有找到,为什么?
问问题
148 次
4 回答
5
C# 支持Delegate形式的第一类函数。
请注意,在您的情况下,事件是侦听器样式范例的基础。
例如,一个表格:
public class Form1
[--snip--]
public event EventHandler Closed;
public event EventHandler Clicked;
另一个想要修改该表单的类:
public class Other
{
public static void CloseHandler(object sender, EventArgs e)
{
Console.WriteLine("Closed");
}
public static void Main(string[] args)
{
Form1 form = new Form1();
form.OnClose += CloseHandler;
form.OnClick += (s,e) => Console.WriteLine("Click");
}
}
这(除非语法错误)应该在表单关闭时将“Closed”打印到控制台。并在单击表单时“单击”。请注意,我排除了执行调用以使其简单的代码。
另请注意,C# 中的事件通常被命名为中断事件的现在时(发生在动作之前)和过去时(发生在动作之后)。您通常还有一个 OnClosed 或类似的方法,以允许继承类在不附加事件的情况下覆盖功能,更不用说允许一个中心位置来避免 null 问题。
于 2013-01-14T23:23:22.350 回答
4
C# 使用委托和事件以及 lambda 表达式,它们允许非常优越的模式。
于 2013-01-14T23:23:44.773 回答
3
好吧...要列出 C# 中的回调,您可以使用Delegates、Events和Lambda 表达式代替 Java 侦听器,充当一流的函数并允许更好的编码模式质量。最近,引入了 Linq Reactive Extensions,为开发人员提供了更多工具。
于 2013-01-14T23:24:39.563 回答