Func<sometype> + Func<sometype> 的实际示例

3
假设您有以下内容:
Func<string> a = () => "string here";
Func<string> b = () => "other string here";

var c = a + b;

这个对实际应用有什么需求?


4
没有。那根本没有任何意义。它甚至无法编译。你的问题是什么? - Aron
5
它确实可以编译。是什么让你认为它不能编译? - Jon Skeet
1
@Jon: 实际上我现在正在阅读你的书,我从中挑选了这个例子。只是不明白如何使用它? - Valentyn Vynogradskiy
2
@ValentynVynogradskiy:哈 :) 这个例子来自书中哪里?我会尝试给答案添加更多上下文。 - Jon Skeet
@Jon:它是一个13.3.5版本,你正在举例说明方差如何使用Func<string>和Func<object>。 - Valentyn Vynogradskiy
1
@ValentynVynogradskiy:啊,对了。那就在那个上下文中使用示例来展示可能性。这并不意味着它是有用的 :)(正如我的答案所述,有一些非常有限的用途,但这将非常不寻常)。最重要的是要理解方差是如何工作的。 - Jon Skeet
1个回答

5
我能想到唯一有用的情况是,如果你实际上要将其视为委托列表(通过 Delegate.GetInvocationList),并分别调用每个委托。例如,您可以对验证器执行此操作,其中每个验证步骤都可以返回null表示“有效”,否则返回错误消息。不过这种情况非常罕见。
委托组合的主要用途是事件处理程序,通常委托类型与EventHandler兼容(具有void返回类型)。在这种情况下,多播委托返回调用的最后一个操作的结果无关紧要,因为无论如何都没有返回值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接