透彻理解---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
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