我只是似乎无法绕过他们。
据我了解,它正在为类动态添加逻辑。框架内的类是否为此做好了准备?
为什么我应该扩展类并在扩展中添加功能。我将可以在全球范围内访问并且 afaik 更容易维护。
我读过有 4 种仿函数类型:
比较器闭
包
谓词
转换 器
我们可能应该处理它们中的每一个。
ps 在vb中有类似的东西吗?
所以我可以说我认为 lambda 表达式是函子。这让我明白了一点:)(呵呵)
- Lambda 表达式是函子吗?
- 匿名函数是函子吗?
但我问了这个问题,因为我遇到了另一种类型的 fucntor,即这些:
delegate void FunctorDelegate(int value);
class Addition {
FunctorDelegate _delegate;
public Addition AddDelegate(FunctorDelegate deleg) {
_delegate += deleg;
return this;
}
public int AddAllElements(IList< int> list) {
int runningTotal = 0;
foreach( int value in list) {
runningTotal += value;
_delegate(value);
}
return runningTotal;
}
}
然后用这个调用它:
int runningTotal = new Addition()
.AddDelegate(new FunctorDelegate(
delegate(int value) {
if ((value % 2) == 1) {
runningOddTotal += value;
}
}))
.AddDelegate(new FunctorDelegate(
delegate(int value) {
if ((value % 2) == 0) {
runningEvenTotal += value;
}
}))
.AddAllElements(list);
所以没有花哨的 lambda 风格的东西。
现在我有这个例子,但完全不清楚为什么这是一个“好”的解决方案。
委托(函子)是否“在大多数情况下”用作 lambda 表达式或匿名方法,只是作为程序员的捷径?据我所知,只有少数情况下它们实际上是解决问题的首选。