欢迎访问 生活随笔!

凯发ag旗舰厅登录网址下载

当前位置: 凯发ag旗舰厅登录网址下载 > 编程语言 > c# >内容正文

c#

c#——事件(event)demo[闻鸡起舞] -凯发ag旗舰厅登录网址下载

发布时间:2024/10/5 c# 38 豆豆
凯发ag旗舰厅登录网址下载 收集整理的这篇文章主要介绍了 c#——事件(event)demo[闻鸡起舞] 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

(1) 创建 c#控制台应用程序。 

(2) 在程序中新建一个表示太阳的类sun,在其中定义一个事件onrise,一个成员方法rise,并在方法中引发事件。参考源代码如下(太阳只有一个,所以将其定义为静态类) : 

public static class sun {public static event eventhandler onrise;public static void rise() {console.writeline("太阳从东方升起!"); if (onrise != null)onrise(null, null);}}

(3) 在程序中新建一个公鸡类 cock ,在其中定义私有字段 _name ,针对 sun.onrise 事件的处理方法 sun_onrise,事件 onsing,以及引发该事件的方法 sing;在类的构造函数中初始化字段,并将事件处理方法与事件相关联。

参考源代码如下(sun_onrise 方法中调用了 sing 方法,表示太阳升起会使公鸡打鸣) : 

public class cock{private string _name;public cock(string name){_name = name;sun.onrise = new eventhandler(sun_onrise);}private void sun_onrise(object sender, eventargs e){console.writeline("公鸡{0}:", _name);console.writeline("雄鸡一声天下白!");this.sing();}public event eventhandler onsing;public void sing(){console.writeline("喔喔喔……");if (onsing != null)onsing(this, null);}}

(4) 在程序中新建一个主人类 host,在其中同样定义字段_name,起床事件 ongetup ,起床方法 getup (引发起床事件) ,养鸡方法 foster ,以及 cock.onsing 事件的处理方法 c1_onsing,并在 foster 方法中与事件相关联。

参考源代码如下(c1_onsing 方法中调用了 getup 方法,表示公鸡打鸣会使主人起床) :

public class host{private string _name;public host(string name) { _name = name; }public event eventhandler ongetup;public void getup(){console.writeline("日出而作……");if (ongetup != null)ongetup(this, null);}public void foster(cock c1){c1.onsing = new eventhandler(c1_onsing);}private void c1_onsing(object sender, eventargs e){console.writeline("主人{0}:", _name);console.writeline("闻鸡起舞!");this.getup();}}

(5) 参照 cock 类和 host 类中的代码,新建狗类 dog 和猫类 cat,在其中定义字段 _owner 以记录其主人对象,定义 owner_ongetup 方法以处理 host.ongetup 事件(主人起床时,输出狗叫声"汪汪"和猫叫声"喵喵";)通过属性 owner 封装字段_owner,并在其 set 访问函数中关联事件和事件处理方法。 

(6) 在程序主方法中依次创建鸡、主人、狗、猫对象,而后调用 sun.rise 方法,参考源代码如下:

public class program {static void main(){//编译运行程序,看看"太阳升起"这一事件会引发怎样的连锁反应。cock cock1 = new cock("花花");host host1 = new host("祖逖");host1.foster(cock1);dog dog1 = new dog("旺财");dog1.owner = host1;cat cat1 = new cat("咪咪");cat1.owner = host1; sun.rise();}}

(7) 编译运行程序,看看"太阳升起"这一事件会引发怎样的连锁反应。

using system;namespace homework3 {/* 在程序中新建一个表示太阳的类sun,在其中定义一个事件onrise,一个成员方法rise,并在方法中引发事件。* 参考源代码如下(太阳只有一个,所以将其定义为静态类) : */public static class sun{public static event eventhandler onrise;public static void rise(){console.writeline("太阳从东方升起!");if (onrise != null)onrise(null, null);}}/*在程序中新建一个公鸡类 cock ,在其中定义私有字段 _name ,针对 sun.onrise 事件的处理方法 sun_onrise,* 事件 onsing,以及引发该事件的方法 sing;在类的构造函数中初始化字段,并将事件处理方法与事件相关联。* 参考源代码如下(sun_onrise 方法中调用了 sing 方法,表示太阳升起会使公鸡打鸣) : */public class cock{private string _name;public cock(string name){_name = name;sun.onrise = new eventhandler(sun_onrise);}private void sun_onrise(object sender, eventargs e){console.writeline("公鸡{0}:", _name);console.writeline("雄鸡一声天下白!");this.sing();}public event eventhandler onsing;public void sing(){console.writeline("喔喔喔……");if (onsing != null)onsing(this, null);}}/*在程序中新建一个主人类 host,在其中同样定义字段_name,起床事件 ongetup ,起床方法 getup (引发起床事件) ,养鸡方法 foster ,* 以及 cock.onsing 事件的处理方法 c1_onsing,并在 foster 方法中与事件相关联。* 参考源代码如下(c1_onsing 方法中调用了 getup 方法,表示公鸡打鸣会使主人起床) :*/public class host{private string _name;public host(string name) { _name = name; }public event eventhandler ongetup;public void getup(){console.writeline("日出而作……");if (ongetup != null)ongetup(this, null);}public void foster(cock c1){c1.onsing = new eventhandler(c1_onsing);}private void c1_onsing(object sender, eventargs e){console.writeline("主人{0}:", _name);console.writeline("闻鸡起舞!");this.getup();}}/*参照 cock 类和 host 类中的代码,新建狗类 dog 和猫类 cat,* 在其中定义字段 _owner 以记录其主人对象,定义 owner_ongetup 方法以处理 host.ongetup 事件(主人起床时,输出狗叫声"汪汪"和猫叫声"喵喵";)* 通过属性 owner 封装字段_owner,并在其 set 访问函数中关联事件和事件处理方法。 */public class dog {private string _name;private host _owner;public dog(string name) { _name = name; }public host owner{set { _owner = value;value.ongetup = new eventhandler(owner_ongetup);}}public void owner_ongetup(object sender, eventargs e){console.writeline("汪汪");}} public class cat {private string _name;private host _owner;public cat(string name) { _name = name; }public host owner{set { _owner = value;value.ongetup = new eventhandler(owner_ongetup);}}public void owner_ongetup(object sender, eventargs e){console.writeline("喵喵");}}/*在程序主方法中依次创建鸡、主人、狗、猫对象,而后调用 sun.rise 方法,参考源代码如下:*/public class program {static void main(){//编译运行程序,看看"太阳升起"这一事件会引发怎样的连锁反应。cock cock1 = new cock("花花");host host1 = new host("祖逖");host1.foster(cock1);dog dog1 = new dog("旺财");dog1.owner = host1;cat cat1 = new cat("咪咪");cat1.owner = host1; sun.rise();}}}

总结

以上是凯发ag旗舰厅登录网址下载为你收集整理的c#——事件(event)demo[闻鸡起舞]的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发ag旗舰厅登录网址下载网站内容还不错,欢迎将凯发ag旗舰厅登录网址下载推荐给好友。

网站地图