c# - 一直使用 Action 和 Func 而不是进行相应的委托(delegate)是不是不好的做法?

标签 c# events delegates action func

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

这样做有什么缺点吗?

最佳答案

不是真的,我能想到的唯一缺点是,如果您有一个合乎逻辑的意图(超出预期的参数和返回值),您希望用户满足使用通用委托(delegate)可能会迷失方向。

例如:

   public delegate void ClearAllValuesDelegate(MyClass X);

   // ...

   ClearAllValuesDelegate myDelegate;

对比:

   Action<MyClass> myDelegate;

在前者中,很明显的意图是操作应该清除引用中的所有值(当然没有办法强制执行此操作)。鉴于 Action<>只是告诉你它需要什么,而不是其他。正如我所说,这只是逻辑上的差异。

但据我所知,确实没有什么大的缺点。大多数时候我们使用 Func<>Action<>我们只是要求调用者给我们一个仅满足输入/输出的目标。

关于c# - 一直使用 Action 和 Func 而不是进行相应的委托(delegate)是不是不好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7408744/

相关文章:

c# - 线程安全队列 - Enqueue/Dequeue

Javascript 将事件从 div 委托(delegate)给输入类型范围

.net - 为什么构造的委托(delegate)类的调用方法是虚拟的?

c# - 关于 CoCreateInstance() 方法实现的问题

c# - 如何为 Odata 创建按 Id 获取的查询表达式

javascript - <asp :TextBox> should accept only numbers

javascript - jQuery:绑定(bind)一个元素以在其内容更改时显示/隐藏

javascript - 如何使用 onclick 事件触发此代码。我尝试过但失败了

jquery - 如何在 jQuery keydown 事件处理程序中检测 SHIFT 键?

iphone - AppDelegate 中的 didSelectViewController 没有被调用