委托和事件的关系
- 格式:pdf
- 大小:54.71 KB
- 文档页数:1
委托和事件的关系
1.委托的定义:
delegate 是⼀种可⽤于封装命名或匿名⽅法的引⽤类型。 委托类似于 C++ 中的函数指针;但是,委托是类型安全和可靠的(MSDN的
定义)。委托是引⽤类型。
委托还有⼀些泛型委托:
Action
Predicate
public class People
{
public event Predicate
public void Start()
{
if (this.Compare(1))
Console.WriteLine("开始");
else
Console.WriteLine("等待");
}
}
//调⽤
People p = new People();
p.Compare += (int preValue) => { if (preValue == 1)return true; else return false; };
p.Start();
Func
例如:Func
例如:
2.事件的定义:
事件是⼀种特殊的委托,是委托的⼀种特殊应⽤。委托是事件的基础,通过将委托与命名⽅法或者匿名⽅法关联,可以实例化委托,然
后委托实例化相应的事件。
事件的使⽤⽅式:事件能通过+=和-=两个⽅式注册或者注销对其处理的⽅法,使⽤+=与-=操作符的时候,系统会⾃动调⽤对应的
add_XXX、remove_XXX 进⾏处理。
事件处理⽅法的绑定:在绑定事件处理⽅法的时候,事件出现在+=、-= 操作符的左边,对应的委托对象出现在+=、-= 操作符的右边。对应
以上例⼦,事件提供了更简单的绑定⽅式,只需要在+=、-= 操作符的右⽅写上⽅法名称,系统就能⾃动辩认。也可以使⽤匿名⽅法(例如:
personManager.MyEvent += delegate(string name){ Console.WriteLine("My name is "+name);)或者lambda表达式(例
如:personManager.MyEvent += (string name)=>{ Console.WriteLine("My name is"+name); })绑定事件。
⽰例:
测试⽰例