wns9778.com_威尼斯wns.9778官网

热门关键词: wns9778.com,威尼斯wns.9778官网
wns9778.com > 计算机教程 > C#事件-1【wns9778.com】

原标题:C#事件-1【wns9778.com】

浏览次数:152 时间:2019-05-19

 

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using System.Threading.Tasks;
  6 
  7 
  8 namespace Wrox.ProCSharp.Delegates
  9 {
 10     public class CarInfoEventArgs:EventArgs
 11     {
 12         public CarInfoEventArgs(string car)
 13         {
 14             this.Car = car;
 15         }
 16         
 17         public string Car {get; private set;}
 18     }
 19     
 20     public class CarDealer
 21     {
 22         public event EventHandler<CarInfoEventArgs> NewCarInfo; //泛型委托,约定:第一个参数是一个对象,包含事件的发送者,第二个参数提供了事件的相关信息
 23         
 24         public void NewCar(string car)
 25         {
 26             Console.WriteLine("CarDealer, new car{0}", car);//显示car信息
 27             
 28             RaiseNewCarInfo(car);
 29         }
 30         
 31         protected virtual void RaiseNewCarInfo(string car)
 32         {
 33             EventHandler<CarInfoEventArgs> newCarInfo = NewCarInfo;
 34             if (newCarInfo != null)
 35             {
 36                 newCarInfo(this, new CarInfoEventArgs(car));
 37             }
 38         }
 39     }
 40 }
 41 
 42 ///////////////////////////////////////////////////////////////////////////////////
 43 
 44 private delegate EventHandler<CarInfoEventArgs> newCarInfo;
 45 public event EventHandler<CarInfoEventArgs> NewCarInfo
 46 {
 47     add
 48     {
 49         newCarInfo  = value;
 50     }
 51     remove
 52     {
 53         newCarInfo -= value;
 54     }
 55 }
 56 
 57 ////////////////////////////////////////////////////////////////////////
 58 
 59 using System;
 60 
 61 namespace Wrox.ProCSharp.Delegates
 62 {
 63     public class Consumer
 64     {
 65         private string name;
 66         
 67         public Consumer(string name)
 68         {
 69             this.name = name;
 70         }
 71         
 72         public void NewCarIsHere(object sender, CarInfoEventArgs e)
 73         {
 74             Console.WriteLine("{0}: car {1} is new", name, e.Car);
 75         }
 76     }
 77 }
 78 
 79 ////////////////////////////////////////////////////////////////////////
 80 
 81 namespace Wrox.ProCSharp.Delegates
 82 {
 83     class Program
 84     {
 85         static void Main()
 86         {
 87             var dealer = new CarDealer();
 88             
 89             var michael = new Consumer("Michael");
 90             dealer.NewCarInfo  = michael.NewCarIsHere;
 91             
 92             dealer.NewCar("Ferrari");
 93             
 94             var sebastian = new Consumer("Sebastian");
 95             dealer.NewCarInfo  = sebastian.NewCarInfo;
 96             
 97             dealer.NewCar("Mercedes");
 98             
 99             dealer.NewCarInfo -=michael.NewCarIsHere;
100             
101             dealer.NewCar("Red Bull Racing");
102         }
103     }
104 }

本文由wns9778.com发布于计算机教程,转载请注明出处:C#事件-1【wns9778.com】

关键词: wns9778.com

上一篇:一条Sql语句分组排序并且限制显示的数据条数

下一篇:没有了