开发工具:
文件大小: 24kb
下载次数: 0
上传时间: 2011-11-14
详细说明: (1)创建C# 控制台应用程序L4_4。 (2)新建一个表示太阳的类Sun,在其中定义一个事件OnRise,一个成员方法Rise,并在方法中引发。参考源代码如下 (太阳只有一个,所以将其定义为静态类,静态类中只能定义静态成员) : public static class Sun { public static event EventHandler OnRise; //定义了一个事件成员OnRise public static void Rise() //引发事件的函数成员 { Console.WriteLine("太阳从东方升起..."); if (OnRise != null) OnRise(null, null); //引发事件OnRise } } (3)在程序中新建一个公鸡类Cock,在其中定义: 私有字段_name; 针对Sun.OnRise事件的处理方法Sun_OnRise; 事件OnSing; 引发事件OnSing的方法Sing。 构造函数,初始化私有字段_name,并将事件处理方法与事 件进行关联。 参考源代码如下: public class Cock { private string _name; //私有字段,用于存放Cock实例的名称 public Cock(string name) //构造函数,初始化字段,并将事件关联至处理方法 { _name = name; Sun.OnRise += new EventHandler(Sun_OnRise); } //定义Sun.OnRise事件的处理方法 private void Sun_OnRise(object sender, EventArgs e) { Console.WriteLine("公鸡{0}:", _name); Console.WriteLine("雄鸡一声天下白!"); this.Sing(); //调用Sing方法以引发自身的事件OnSing } public event EventHandler OnSing; //Cock类的事件成员 public void Sing() //引发OnSing事件的方法 { Console.WriteLine("喔喔喔..."); if (OnSing != null) OnSing(this, null); } } (4)在程序中新建一个主人类Host,在其中同样定义: 私有字段_name; 起床事件OnGetup; 起床方法Getup(引发起床事件的成员); 养鸡方法Foster,在该方法中将事件OnSing与事件处理方法c1_OnSing相关联; Cock.OnSing事件的处理方法c1_OnSing。 参考源代码如下:(c1_OnSing方法中调用Getup方法,表示公鸡打鸣会使主人起床) public class Host { private string _name; public Host(string name) { _name = name; } public event EventHandler OnGetup; //Host类的事件成员 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)新建狗类Dog和猫类Cat,在其中定义: 私有字段_owner,记录器主人对象; owner_OnGetup方法,处理Host.OnGetup事件(主人起床时,狗和猫的动作); 公有属性Owner封装字段_owner,并在其set访问函数中关联事件和事件处理方法; 参考源代码如下: public class Dog { private string _name; private Host _owner; public Host Owner { get { return this.owner; } set { this._owner = value; this._owner.OnGetup += new EventHandler(owner_OnGetup); } } public Dog(string name) { _name = name; } private void owner_OnGetup(object sender, EventArgs e) { Console.WriteLine("{0}:", _name); Console.WriteLine("汪汪...主人起床了,我也该起了"); } } public class Cat { private string _name; private Host _owner; public Host Owner { get { return this._owner; } set { this._owner = value; this._owner.OnGetup += new EventHandler(owner_OnGetup); } } public Cat(string name) { _name = name; } private void owner_OnGetup(object sender, EventArgs e) { Console.WriteLine("{0}:", _name); Console.WriteLine("喵喵...主人起床了,我也该起了"); } } (6)在程序主方法中依次建立鸡、主人、狗、猫对象,而后调用Sun.OnRise方法,参考源代码如下: class L4_4 { 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(); } } ...展开收缩
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.