【发布时间】:2010-11-09 22:21:42
【问题描述】:
我需要在订阅对象 obj 中的事件的事件处理方法中访问对象 obj(属于某个 ClassA 类型)的 x 和 y 属性。
选项1:只要把这个EventHandler类型的事件,转换为发送者。
无效处理方法(对象发送者,EventArgs e) { ClassA ca = 作为 ClassA 的发送者; 做某事(ca.id,ca.x,ca.y); } RaiseEvent(this,null); //在A类中选项2: 制作一个 SpecialEventHandler1 以避免强制转换。
无效处理方法(SpecialEventArgs e) { Dosomething(e.id, e.x,e.y); } RaiseSpecialEvent1(new SpecialEventArgs(this.id, this.x,this.y));//在ClassA中选项3: 制作一个 SpecialEventHandler2,这样就可以避免强制转换和创建新的 SpecialEventArgs 对象。
无效处理方法(A 类发件人) { Dosomething(sender.id, sender.x, sender.y); } RaiseSpecialEvent2(this); //在A类中假设此事件以@50/秒连续引发。哪个效率更高?它取决于ClassA的大小吗?我假设 Option3 是性能方面的最佳方式。请提供您的见解。
【问题讨论】: