Is it bad practice to use Action and Func all the

2019-06-28 01:18发布

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?

3条回答
爷的心禁止访问
2楼-- · 2019-06-28 02:10

The main difference to me is the difference between:

enter image description here

And:

enter image description here

Obviously, there is at least some value in having the parameter named.

查看更多
Viruses.
3楼-- · 2019-06-28 02:14

imho it's a matter of preference, to the CLR it's the same thing

查看更多
虎瘦雄心在
4楼-- · 2019-06-28 02:23

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.

查看更多
登录 后发表回答