现在的位置: 首页 > 综合 > 正文

委托:两个例子(主人仆人、打游戏)

2011年05月25日 ⁄ 综合 ⁄ 共 4183字 ⁄ 字号 评论关闭
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");
        }

    }

    
    
}

抱歉!评论已关闭.