/*委托这个相对较复杂,准备考虑实用反射还是嵌套代理实现实例化人也一起做*/
using System;
using System.Collections.Generic;
using System.Text;
namespace Delegate
{
delegate void EatDelegate(string AFood);
class Program
{
static void Main(string[] args)
{
Man mZS = new Man("张三"); //实例一个对象
Man mLS = new Man("李四");
EatDelegate deleZS = new EatDelegate(mZS.Eat); //创建一个代理
EatDelegate deleLS = new EatDelegate(mLS.Eat);
EatToghter("香蕉", deleZS,deleLS);
Console.ReadLine();
}
//用委托作为参数传递
static void EatToghter(string AFood, params EatDelegate[] AParams)
{
if (AParams == null)
{
Console.WriteLine("座谈会结束!");
}
else
{
EatDelegate deleEatChain = null;
foreach (EatDelegate deleEat in AParams)
{
deleEatChain += deleEat;
}
deleEatChain(AFood);
}
}
}
//创建一个对象类封装属性和方法
class Man
{
private string sName;
public Man(string AName)
{
this.sName = AName;
}
public void Eat(string AFood)
{
Console.WriteLine(sName + "在吃" + AFood);
}
}
}