Difference in invoking through Delegates and Events C#

后端 未结 5 941
天命终不由人
天命终不由人 2021-01-13 22:11

What is the difference?

Using Delegate

public delegate void TestDelegate();
public TestDelegate delObj = SomeMethod;

public void S         


        
5条回答
  •  庸人自扰
    2021-01-13 23:06

    It works exactly same. If you use

    public event EventHandler SomeEvent;
    

    the C# compiler does (simplified code):

    private EventHandler SomeEventField;
    public void add_SomeEvent( EventHandler handler) {
        this.SomeEventField = (EventHandler)Delegate.Combine(this.SomeEvent, handler);
    }
    public void remove_SomeEvent( EventHandler ) {
       this.SomeEventField = (EventHandler)Delegate.Remove(this.SomeEvent, handler);
    }
    

    The method add_SomeEvent is called when you use SomeEvent += ... and the remove_SomeEvent is called when you use SomeEvent -= ....

    However in both cases there are used same delegates.

提交回复
热议问题