一直使用Action和Func而不是制作相应的代表是不好的做法吗?

Joe*_*rey 4 c# events delegates action func

很多时候在我的程序中创建其他类可以订阅而不是创建委托并从委托创建事件的简单事件时,我只需使用Action或Func创建事件,以避免必须创建委托.

这样做有什么缺点吗?

Jam*_*are 8

不是真的,我能想到的唯一缺点是,如果你有一个逻辑意图(超出预期的参数和返回值),你希望用户满足使用泛型代表可能会丢失.

例如:

   public delegate void ClearAllValuesDelegate(MyClass X);

   // ...

   ClearAllValuesDelegate myDelegate;
Run Code Online (Sandbox Code Playgroud)

VS:

   Action<MyClass> myDelegate;
Run Code Online (Sandbox Code Playgroud)

在前者中,很明显的意图是该动作应该清除引用中的所有值(尽管当然没有办法强制执行).而Action<>只是告诉你它需要什么,而不是其他.就像我说的,这只是一个逻辑上的区别.

但实际上,我所知道的并没有很大的缺点.大多数情况下,当我们使用时Func<>,Action<>我们只是要求调用者给我们一个仅满足输入/输出的目标.