Is there any best practice with respect to coding style with respect to explicit use of the delegate keyword instead of using a lambda?
e.g.
new Thread(() =>
{
// work item 1
// work item 2
}).Start();
new Thread(delegate()
{
// work item 1
// work item 2
}).Start();
I think the lambda looks better. If the lambda is better style, what’s the point of having a delegate keyword, other than for the fact that it existed before lambdas were implemented?
Lambda syntax is much more generalised, and the designers have said that they’d ideally remove the old overlapping syntaxes (dont have a citation, but it’s probably Eric Lippert or Jon Skeet in a book or a podcast).
But
delegateallows you to ignore parameters, e.g.:versus having to say:
which can be very useful in large argument lists and/or to make the code more resilient to refactoring.
EDIT: As pointed out by Yann Schwartz in another answer (now unfortunately deleted), a very neat usage of this trick is in order to provide a default hander for an event using the Null Object pattern:-
(though what you might often end up doing is an Inline Method of
OnMyEvent, making the code even shorter again.)