C#中,对委托和事件的理解
委托:
1、委托即函数指针,类型安全的函数指针(c中则无该限制)
2、委托可看作是某一类型的方法签名,此类型仅对返回值和方法参数而言。即:方法的参数形式、顺序、个数和返回类型相同,而不论其static/instance,public/private/internal/...,即可定义为某一类型的委托(被委托所调用),委托即委托实例,因此不存在static,在其声明中
3、委托继承结构:delegate <--System.MulticastDelegate <--System.Delegate。当为多播委托时,则委托类型必然为void的(因为根本不知道各个委托方法的返回类型)
4、多播委托中的方法是按顺序(FIFO)被调用的,故各方法间最好无依赖关系.
事件:
1、事件依赖于委托,它将其事件处理程序注册给委托。
2、事件可关联多个委托(同一类型的实例),这些委托无执行的先后顺序,当然,事件处理程序也是void类型的。
1、委托即函数指针,类型安全的函数指针(c中则无该限制)
2、委托可看作是某一类型的方法签名,此类型仅对返回值和方法参数而言。即:方法的参数形式、顺序、个数和返回类型相同,而不论其static/instance,public/private/internal/...,即可定义为某一类型的委托(被委托所调用),委托即委托实例,因此不存在static,在其声明中
3、委托继承结构:delegate <--System.MulticastDelegate <--System.Delegate。当为多播委托时,则委托类型必然为void的(因为根本不知道各个委托方法的返回类型)
4、多播委托中的方法是按顺序(FIFO)被调用的,故各方法间最好无依赖关系.
事件:
1、事件依赖于委托,它将其事件处理程序注册给委托。
2、事件可关联多个委托(同一类型的实例),这些委托无执行的先后顺序,当然,事件处理程序也是void类型的。