Some time ago I got started using anonymous delegates extensively for unittesting event-raising, but not tidying up after the subscription annoyed me.

If a class subscribes to an event on an object it’ll prevent the subscribee from being garbage collected. This is a particular problem with anonymous delegates, because normally you won’t think of removing the subscription, and how to do it may not initially seem obvious. However the subscription can be removed by specifically creating the instance of the subscriber delegate before the actual subscription and keeping it for the un-subscription:

var anonymousDelegate = new SomeDelegate(
delegate (…params…) { … implementation … }
);

SomeObject.SomeEvent += anonymousDelegate;
SomeObject.SomeMethodWhichRaisesSomeEvent();
SomeObject.SomeEvent -= anonymousDelegate;