透彻理解---C#中的事件(唐伯虎点秋香小游戏)

      
      因为时间的关系暂时没有写注释,也没有给出理解事件的文字。
     先贴出代码。周末再补上。有不明白的朋友请与我联系。

  1 using System;
  2 
  3 namespace demo_2
  4 {
  5     /// <summary>
  6     /// Class1 的摘要说明。
  7     /// </summary>
  8     public delegate void delegate_handler(object sender,readArgs e);
  9     class Class1
 10     {
 11         /// <summary>
 12         /// 应用程序的主入口点。
 13         /// </summary>
 14         [STAThread]
 15         static void Main(string[] args)
 16         {
 17             GG g = new GG("唐伯虎",22);
 18             g.add_EventHandler(new delegate_handler(g.loveMM));
 19             g.begin();
 20         }
 21     }
 22     class MM
 23     {
 24         string[]  MM_array=new string[4];
 25         public string this[int MM_index]
 26         {
 27             get{
 28                 if(MM_index<0||MM_index>4)
 29                 {return null;}
 30                 else
 31                 {return MM_array[MM_index];}
 32                 }
 33             set
 34             {
 35                 if(!(MM_index<0||MM_index>4))
 36                 {
 37                      MM_array[MM_index]=value;
 38                 }
 39             }
 40         }
 41     }
 42     class GG
 43     {
 44         public GG(string name,int age)
 45         {
 46             Console.Write("欢迎{0},今年{1}  ",name,age.ToString());
 47         }
 48         public event delegate_handler ChooseMM;
 49         private string name = "";
 50         private int age = 20;
 51         public string Name
 52         {
 53             get
 54             {
 55                 return name;
 56             }
 57             set
 58             {
 59                 name = value;
 60             }
 61         }
 62         public int Age
 63         {
 64             get
 65             {
 66                 return age;
 67             }
 68             set
 69             {
 70                 age = value;
 71             }
 72         }
 73         
 74         public void loveMM(object sender,  readArgs e)
 75         {
 76             switch(e.ChooseID)
 77             {
 78                 case"1":
 79                     Console.Write("恭喜你,你点中秋香啦!是不是传说中的秋香?莫非是如花?哈哈");
 80                     break;
 81                 case"2":
 82                     Console.Write("呵呵~我喜欢散文。!");
 83                     break;
 84                 case"3":
 85                     Console.Write("这一点倒是可以考虑,不过我认为这样的想法太极端了");
 86                     break;
 87                 case"4":
 88                     Console.Write("爱情与事业有时候我真的不知道选择哪一样,如果要抉择我选择前者。");
 89                     break;
 90             }
 91             Console.Write("游戏结束");
 92         }
 93         public void begin()//触发事件的方法
 94         {
 95             
 96             
 97             
 98             OnChooseMM(initinal());
 99         }
100 
101         public string   initinal()
102         {
103             
104             Console.Write("请点秋香(输入1,2,3,4回车)");
105             Console.WriteLine();
106             MM m = new MM();
107             m[0]="温柔,体贴,大方,善解人意";
108             m[1]="冰雪聪慧,懂古典诗词";
109             m[2]="每天回家都可以吃到她为你煮好的饭菜";
110             m[3]="事业心强,可以成为你的得力助手";
111             Console.Write("1.【沉鱼】{0};\n2.【落雁】{1};\n3.【闭月】{2};\n4.【羞花】{3};\n",m[0],m[1],m[2],m[3]);
112             string  choosmm = Console.ReadLine();
113             
114             
115             return choosmm;
116         }
117         public virtual void OnChooseMM(string choose)
118         {
119             if(!(ChooseMM==null))
120             {
121                 
122                 ChooseMM(this,new readArgs(choose));
123             }
124             
125         }
126         public void add_EventHandler(delegate_handler dh)
127         {
128             if(dh==null)
129             {
130                  ChooseMM=dh;
131             }
132             else
133             {
134                 ChooseMM +=dh; 
135             }
136 
137         }
138     }
139     public class  readArgs:EventArgs
140     {
141         private string chooseID="";
142         public string ChooseID
143         {
144             get{return chooseID;}
145         }
146         public readArgs(string a)
147         {
148            chooseID=a;
149         }
150     }
151 }
152 
posted @ 2005-11-24 11:47  人月  阅读(1391)  评论(4编辑  收藏  举报