事件 委托 匿名函数 Lambda
事件:
- 特殊类型的多路广播委托。
- 由发行者,接收者和媒介组成。
- 若事件被订阅,当发行者引发事件时,订阅者则会响应其事件处理程序方法。
- 事件可以通过 +=(订阅)或-= (取消),并且一个事件可以有多个订阅者。
- 事件引发时,将会触发其所有订阅方法。
委托:
- 一种定义方法签名的类型。
- 方法做为参数进行传递。
- 事件的媒介。
- 必须引用具有相同签名的方法。
- 协变,是对其签名的返回类型,进行父类引用指向子类。
- 逆变,是对其签名的参数类型,进行父类引用指向子类。
- Func<T,...,TResult> ,有参有返回类型
- Action<T,...>, 有参无返回类型
匿名函数:
- 简化委托的签名方法。
- delegate(){...}
- delegate(int x, int y){...}
- Func<int,bool> f = delegate(int x){ return x>0; };
- Action<int> a = delegate(int x){...};
Lambda:
- 匿名函数
- 更加简化委托的签名方法。
- => 读为 “goes to”
- =>{...}
- x=>{...}
- (x,y)=>{x==y}
- (x,y)=>{return x==y;}
- (string x, int y){...}
- Func<int,string> f = x=> {int y=x+1; return y.toString();};
- Action<int,string> a = (x,y)=>{ x++; y=x.Tostring(); };