|
|
Posted on
2007-01-25 12:18
laifangsong
阅读( 715)
评论()
收藏
举报
using System;

namespace gainian.DelegateExample
  {
public delegate void EatEventHander(object sender, EatEventArgs e);
public class EatEventArgs: EventArgs
 {
public string EatWhere;
public decimal EatMoney;
public EatEventArgs(string EatWhere, decimal EatMoney)
 {
this.EatWhere = EatWhere;
this.EatMoney = EatMoney;
}
}
public class Delegate1
 {
// static void Main(string[] args)
// {
// Master master = new Master();
// Servant servant = new Servant();
//
// master.EatEvent += new EatEventHander(servant.Arrange);
// master.OnHungry("福州大酒店", 1000);
//
// Console.ReadLine();
// }
}

class Master
 {
public event EatEventHander EatEvent;
private void OnEatEvent(EatEventArgs e)
 {
if(EatEvent!=null)
 {
EatEvent(this, e);
}
}
public void OnHungry(string EatWhere, decimal EatMoney)
 {
EatEventArgs e = new EatEventArgs(EatWhere, EatMoney);
Console.WriteLine("主人:我肚子有点饿了!");
Console.WriteLine("主人:我准备去 {0}吃饭,",EatWhere);
Console.WriteLine("主人:准备消费 {0} !",EatMoney);
Console.WriteLine("主人:仆人,快替我准备预定!\n");
OnEatEvent(e);
}
}
class Servant
 {
public void Arrange(object sender, EatEventArgs e)
 {
Console.WriteLine("仆人:我已接到您的指示了!");
Console.WriteLine("仆人:您准备去 {0}吃饭,",e.EatWhere);
Console.WriteLine("仆人:您消费 {0} !",e.EatMoney);
Console.WriteLine("仆人:我马上帮您预定!\n");
}
}

}
using System;

namespace gainian.DelegateExample
  {
public delegate void PlaygameEventHandle(Employee emp);
 /**//// <summary>
/// Delegate2 的摘要说明。
/// </summary>
public class Delegate2
 {
public Delegate2()
 {
//
// TODO: 在此处添加构造函数逻辑
//
}
static void Main(string[] args)
 {
XiaoLi xiaoli = new XiaoLi("小李",1000);
XiaoZhang xiaozhang = new XiaoZhang("小张",1000);
Console.WriteLine("小李原来的薪水是 {0}", xiaoli.Salary);
xiaoli.playgameEvent += new PlaygameEventHandle(xiaozhang.SubtractSalary);
xiaoli.OnPlaygame();
Console.WriteLine("小李打游戏后的薪水是 {0}", xiaoli.Salary);
Console.ReadLine();
}
}
public class Employee
 {
private string name;
private decimal salary;
public Employee(string name, decimal salary)
 {
this.name = name;
this.salary = salary;
}
public string Name
 {
get
 {
return this.name;
}
set
 {
this.name = value;
}
}
public decimal Salary
 {
get
 {
return this.salary;
}
set
 {
this.salary = value;
}
}
public virtual void OnPlaygame()
 {
this.salary -= 10;
}
}
public class XiaoLi: Employee
 {
public XiaoLi(string name, decimal salary) : base(name,salary)
 {}
public event PlaygameEventHandle playgameEvent;
public override void OnPlaygame()
 {
Console.WriteLine("\n小李正在打游戏。。。\n");
if(playgameEvent!=null)
 {
playgameEvent(this);
}
}
}
public class XiaoZhang: Employee
 {
public XiaoZhang(string name, decimal salary) : base(name,salary)
 {}
public void SubtractSalary(Employee emp)
 {
Console.WriteLine(this.Name + " 发现 " + emp.Name + " 在打游戏。");
emp.Salary -= 100;
Console.WriteLine(this.Name + " 扣了 " + emp.Name + " 100块钱!\n");
}
}
}

|