day16 委托(下)
1,系统委托
1.1 Func委托
格式:delegate TResult Func<TResult> 无参有返回值
delegate TResult Func<T1,TResult >(T1 arg1)有参有返回值,最多4个参数.
1.2 Action委托
格式:delegate void Action(); 无参,无返回值
delegate void Action<T>(T1 arg1); 有参,无返回值
2,事件的定义
事件是说在发生其他类或对象关注的事情时,类或对象可通过事件通知它们.事件的关键字是event.声明事件类似声明一个进行封装的委托类型变量而已.
事件与委托的区别:
1.事件是一种特殊的委托的实例,或者说是受限制的委托,是委托一种特殊应用,在类的外部只能施加+=,-=操作符,二者本质上是一个东西。
2.事件只允许用add(+=), remove(-=)方法来操作,这导致了它不允许在类的外部被直接触发,只能在类的内部适合的时机触发。委托可以在外部被触发,但是别这么用。使用中,委托常用来表达回调,事件表达外发的接口。
3.事件不可以当作形参传递,但是委托可以.