A lot of time when creating simple events in my program that other classes can subscribe to instead of making a delegate and creating an event from the delegate I just create the event with either Action or Func to avoid having to create the delegate.
Is there any downsides to doing this?
The main difference to me is the difference between:
And:
Obviously, there is at least some value in having the parameter named.
imho it's a matter of preference, to the CLR it's the same thing
Not really, the only downside I can think of is that if you have a logical intention (beyond the parameters and return values expected) that you want the user to satisfy that may get lost using the generic delegates.
For example:
vs:
In the former, it's clear the intention is that the action should clear all the values in the reference (though there's no way to enforce this of course). Whereas
Action<>
just tells you what it takes and not much else. Like I said, this is just a logical difference.But really there's no big downside that I'm aware of. Most of the time when we use
Func<>
andAction<>
we are simply asking the caller to give us a target that satisfies the inputs/outputs only.