Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

You probably already know this but another trick is just to assign an "empty" lambda to the event.

    public event SomeDelegate MyEvent = (sender, e) => {};
Or better yet

    public event SomeDelegate MyEvent = delegate {};


Yep, but with either of those, it can still be set back to null :)


True. I don't use events much but when I do I use the following pattern:

    private SomeDelegate _myEvent = delegate {};

    public event SomeDelegate MyEvent
    {

        add { _myEvent += value; }
        remove { _myEvent -= value; }

    }


If I'm not mistaken, that has the same semantics as the standard one line event definition, i.e.:

    public event EventHandler MyEvent;
    // Inside the class, MyEvent is bound to a multicast delegate.
    // Outside the class, MyEvent is bound to an auto-generated add/remove mechanism.
    // So MyEvent can only be set to null or invoked from inside the class.


Hmmm, you're right. That's two (C# related) things I learned today.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: