博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
委托与事件
阅读量:6696 次
发布时间:2019-06-25

本文共 1806 字,大约阅读时间需要 6 分钟。

 

委托是对函数的封装,可以当做给方法的特征指定一个名称。而事件则是委托的一种特殊形式,当发生有意义的事情时,事件对象处理通知过程。

委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。

在发生其他类或对象关注的事情时,类或对象可通过事件通知它们。

EventArgs 是包含事件数据的类的基类。

1     public class Cat 2     { 3         private string name; 4  5         public Cat(string name) 6         { 7             this.name = name; 8         } 9 10         public delegate void CatShoutEventHandler(object sender,CatShoutEventArgs args);11 12         public event CatShoutEventHandler CatShout;13 14         public void Shout()15         {16             Console.WriteLine("喵,我是{0}.",name);17 18             if (CatShout !=null)19             {20                 CatShoutEventArgs e=new CatShoutEventArgs();21                 e.Name = this.name;22                 CatShout(this,e);23             }24         }25     }
1     public class CatShoutEventArgs : EventArgs 2     { 3         private string name; 4  5         public string Name 6         { 7             get { return name; } 8             set { name = value; } 9         }10     }
1     public class Mouse 2     { 3         private string name; 4  5         public Mouse(string name) 6         { 7             this.name = name; 8         } 9 10         public void Run(object sender,CatShoutEventArgs args)11         {12             Console.WriteLine("老猫{0}来了,{1} 快跑!",args.Name,name);13         }14     }
1         static void Main(string[] args) 2         { 3             Cat cat=new Cat("Tom"); 4  5             Mouse mouse1=new Mouse("Jerry"); 6             Mouse mouse2=new Mouse("Jack"); 7  8             cat.CatShout += new Cat.CatShoutEventHandler(mouse1.Run); 9             cat.CatShout += new Cat.CatShoutEventHandler(mouse2.Run);10 11             cat.Shout();12 13             Console.Read();14         }

 

转载于:https://www.cnblogs.com/bjxingch/articles/7418585.html

你可能感兴趣的文章