gpt4 book ai didi

c# - Predicates 或 Actions 是否具有任何其他属性或特性以将它们与 Funcs 区分开来?

转载 作者:行者123 更新时间:2023-11-30 19:43:59 24 4
gpt4 key购买 nike

Predicate 只是一个返回 bool 值的 Func:

Predicate<T1, T2, T3, ...,Tn> = Func<T1, T2, T3, ...,Tn, bool> 

Action 只是一个不返回值的 Func:

Action<T1, T2, T3, ...,Tn> = Func<T1, T2, T3, ...,Tn, void>

我的问题: PredicatesActions 是否具有任何其他属性或特性以区别于 Funcs

最佳答案

Predicate 只是 Func 的一种特殊形式,用于 bool 返回类型——即。它同构于Func<X, bool> .

Action 是完全不同的野兽。它说“这是一个会做某事的东西”。换句话说,Action 会产生副作用。

Func 和 Predicate 具有(至少可能)Referential Transparency 的属性.它们可以表现为适当的数学函数。这就是说,对于接受类型 A 的元素并返回 B 的 Func a,它应该始终为相同的 A 返回相同的 B。这具有一些相当深刻、重要且非常有用的属性——特别是它使它们非常有用易于测试、非常容易推理并且易于编写。

另一方面, Action 必须产生副作用。副作用通常涉及排序问题,难以组合并且是程序复杂性的重要来源。此外,他们避开类型系统,将这种复杂性隐藏在 void 后面。

Action 和 Func/Predicate 从根本上来说是非常不同的东西。

关于c# - Predicates 或 Actions 是否具有任何其他属性或特性以将它们与 Funcs 区分开来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13397014/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com