曾经有过一次面试,要写:"猫叫,老鼠跑,主人醒"的程序,只记得要考察委托和事件,却没能写出来。
  用委托和事件来处理当然很方便,但是现在象这样的问题,都会用到设计模式(观察者模式)来处理。自然是从灵活度上来考虑。因为不懂设计模式,暂时就简单的复习一下Delegate and Event吧~
  Delegate实际上一个class,所以可以在定义class的任何地方定义delegate;说其类型安全,自然跟其定义方式有关:定义了代理方法体的详细细节(返回类型,参数列表),这样在使用的时候就能在编译阶段发现error. 我们使用代理,是因为它默认有一个参数:方法体名称,也就是可以通过Delegate来把方法当作参数传递。
  Event自不必多说,但有一点必须注意:所有的事件是通过代理来激活的。这也就是为什么Delegate和Event结合这么紧密的原因.实际上查看控件已经定义好的Delegate和Event,我们也可以看出其作用和用法:如,Button 的Click事件,查看相关定义,metadata,可以看到:
重读C#高级编程之委托and事件 this.button1.Click += new System.EventHandler(this.button1_Click);

重读C#高级编程之委托and事件public delegate void EventHandler(object sender, EventArgs e);

重读C#高级编程之委托and事件public event EventHandler Click;
很明显:首先定义EventHandler delegate,而后定义委托事件Click, then,在click事件触发的时候执行事件处理程序:button1_click;
  Demo:猫叫,老鼠跑,主人醒
重读C#高级编程之委托and事件using System;
重读C#高级编程之委托and事件
using System.Collections.Generic;
重读C#高级编程之委托and事件
using System.Text;
重读C#高级编程之委托and事件
重读C#高级编程之委托and事件
namespace ConstructorDemo
}
Delegate的应用肯定不止这些,只是暂时还真不清楚具体在什么地方应用。等有机会再详细总结.

相关文章:

  • 2021-06-11
  • 2021-09-08
  • 2021-12-17
  • 2021-06-14
  • 2021-07-23
猜你喜欢
  • 2021-09-15
  • 2022-12-23
  • 2022-12-23
  • 2021-09-02
  • 2021-12-19
  • 2021-11-30
  • 2021-06-20
相关资源
相似解决方案