代理delegate:
对象引用 指向 某个特定类型的对象。
代理 指向 某个特定类型的方法。
代理四步:
class Program
{
//定义frist代理
public delegate void first(int i);
//主函数,main入口
static void Main(string[] args)
{
//创建first类型引用
first MyDelegate = null;
//创建指向show方法的代理引用
MyDelegate += new first(show);
//通过代理引用调用show方法
MyDelegate(666);
Console.ReadKey();
}
//show方法
public static void show(int i)
{
Console.WriteLine(i.ToString());
}
}
如:
class Program
{
//定义frist代理
public delegate void first(int i);
//主函数,main入口
static void Main(string[] args)
{
//创建first类型引用
first MyDelegate = null;
//创建指向show方法的代理引用
MyDelegate += new first(show);
//通过代理引用调用show方法
diao(666, MyDelegate);
Console.ReadKey();
}
//show方法
public static void show(int i)
{
Console.WriteLine(i.ToString());
}
//
public static void diao(int i,first dele)
{
dele(i);
}
}
事件event:
//定义EventDelegate代理
public delegate void EventDelegate();
class Program
{
//主函数,main入口
static void Main(string[] args)
{
//实例化ClockTimer
ClockTimer clockTimer = new ClockTimer();
//MyEvent中添加OnClockTimer方法
clockTimer.MyEvent += new EventDelegate(OnClockTimer);
//执行clickTimer对象的show方法
clockTimer.show();
Console.ReadLine();
}
//接受方法
public static void OnClockTimer()
{
Console.WriteLine("收到时钟事件");
}
}
//事件产生类
public class ClockTimer
{
//定义事件(event)
public event EventDelegate MyEvent;
//产生事件方法
public void show()
{
for(int i=0;i<1000;i++)
{
//产生事件
MyEvent();
//睡眠1秒
Thread.Sleep(1000);//System.Threading;
}
}
}
用delegate关键字
用event关键字。
大师们,上面的是我对event和delegate的理解。如果有错别的地方麻烦您帮我指出来。万分感谢!
原文:http://www.cnblogs.com/hugjil/p/6291400.html