Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it bad practice to use Action and Func all the time instead of making corresponding delegates?

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?

like image 251
Joel McClurrey Avatar asked Dec 16 '22 09:12

Joel McClurrey


1 Answers

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:

   public delegate void ClearAllValuesDelegate(MyClass X);

   // ...

   ClearAllValuesDelegate myDelegate;

vs:

   Action<MyClass> myDelegate;

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<> and Action<> we are simply asking the caller to give us a target that satisfies the inputs/outputs only.

like image 159
James Michael Hare Avatar answered Apr 26 '23 11:04

James Michael Hare