委托和事件
委托例子:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace shijian2
{
class Program
{
public delegate void MyHandler(string str);
static void Main(string[] args)
{
Program pro = new Program();
MyHandler mh= new MyHandler(pro_Myevent);//相当于把mh是一个引用指向pro_Myevent()这个方法。
mh("dsaf");//可以调用该方法!
}
static void pro_Myevent(string str)
{
Console.WriteLine(str);
Console.ReadKey();
}
}
}
委托和事件结合:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace shijian2
{
class Program
{
public delegate void MyHandler(string str);//声明委托
public event MyHandler Myevent;//声明事件
static void Main(string[] args)
{
Program pro = new Program();
pro.Myevent += new MyHandler(pro_Myevent);//事件引用可以指向多个委托,这是添加的方法。
pro.Myevent("abc");//调用方法,这里也叫事件触发!
}
static void pro_Myevent(string str)
{
//pro.Myevent -= new MyHandler(pro_Myevent);
Console.WriteLine(str);
Console.ReadKey();
}
}
}
总结:事件必须是特定委托的子类。上述两个DEMO本质还是一样的。

浙公网安备 33010602011771号