- classTestDelegate
- {
- publicdelegatevoidEventHanding();
- publiceventEventHandingOnFireEvnet;
- protectedvoidRegistEvent()
- {
- Delegated1=newEventHanding(test1);
- Delegated2=newEventHanding(test2);
- Delegated3=newEventHanding(test3);
- Delegated4=newEventHanding(test4);
- DelegatenewEvent1=Delegate.Combine(d1,d2);
- DelegatenewEvent2=Delegate.Combine(d3,d4);
- //新合并的委托是一个新的对象
- if(Object.ReferenceEquals(d2,newEvent1))
- {
- stringstr=string.Empty;
- }
- if(d2.Method.ToString().CompareTo(newEvent1.Method.ToString())==0)
- {
- stringstr=string.Empty;
- }
- EventHandingnewEvent=(EventHanding)Delegate.Combine(newEvent1,newEvent2);
- OnFireEvnet+=newEvent;
- }
- protectedvoidFireEvent()
- {
- //单波
- MulticastDelegatedel=(MulticastDelegate)OnFireEvnet;
- del.Method.Invoke(this,null);
- //多波
- OnFireEvnet();
- }
- inti=0;
- publicvoidtest1()
- {
- i++;
- }
- publicvoidtest2()
- {
- i++;
- }
- publicvoidtest3()
- {
- i++;
- }
- publicvoidtest4()
- {
- i++;
- }
- publicstaticvoidTest()
- {
- TestDelegatetest=newTestDelegate();
- test.RegistEvent();
- test.FireEvent();
- }
- }
Delegate 与 MulticastDelegate 委托的单波与多波模式
最新推荐文章于 2022-06-30 16:12:48 发布