首页 > 代码库 > 委托与事件
委托与事件
定义委托
public delegate void NumberChangeEventHandler(int count);
定义事件发布者
public class Publisher { private int count; public NumberChangeEventHandler NumberChanged; // public event NumberChangeEventHandler NumberChanged; public void DoSomething() { if (NumberChanged != null) { count++; NumberChanged(count); } } }
定义事件订阅者
public class Subscriber { public void OnNumberChanged(int count) { Console.WriteLine("Subscriber notified:count={0}", count); } }
class Program { static void Main(string[] args) { Publisher pub = new Publisher(); Subscriber sub = new Subscriber(); //pub.NumberChanged += new NumberChangeEventHandler(sub.OnNumberChanged); pub.NumberChanged += sub.OnNumberChanged; pub.DoSomething(); pub.NumberChanged(100); } }
上面代码定义了一个NumberChangedEventHandler委托,然后创建了事件的发布者Publisher和订阅者Subscriber。当使用委托变量时,客户端可以直接通过委托变量触发事件--->pub.NumberChanged(100),这将会影响所有注册了该委托的订阅者。
解决:将声明委托变量代码注释,取消注释下一行 的事件,这时候,直接调用pub.NumberChanged(100)是被禁止的。实现了对委托变量的封装
委托与事件
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。