很多时候在我的程序中创建其他类可以订阅的简单事件而不是创建委托(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/