公司使用C#中的Func和Action代理吗?

时间:2015-05-09 08:21:15

标签: c# events delegates action func

我真的很想知道Func和Action代表是否被开发公司使用。 他们是否将它用于活动?我知道这是一个奇怪的问题,但我已经向老师和其他许多人询问了,但没有人能给我答案。

2 个答案:

答案 0 :(得分:4)

在C#中,ActionFunc是减少代码重复和减少耦合的极其有用的工具。减少重复并使代码可重用对任何公司都很重要

很遗憾,许多开发人员都不愿意这样做,因为他们并不真正了解他们。

将Action和Func添加到工具箱是改进C#代码的一个非常重要的步骤。

使用它们的最佳例子:Linq基于ActionFunc以及Predicate

答案 1 :(得分:3)

这是这些结构的力量的一个例子,它向我展示了“初级开发者可能不理解它”的空虚。

如果您有一个Organisation类,其中包含Department个对象的集合,并且Department类包含Employee个对象的集合,那么您如何获得一个组织的全套员工?

您可以遍历对象并构建集合:

var allEmployees = new List<Employee>();
foreach (var department in organisation.Departments)
{
    foreach (var employee in department.Employees)
    {
        allEmployees.Add(employee);
    }
}

或者你可以简单地使用单一陈述

var allEmployees = organisation.Departments.SelectMany(d => d.Employees).ToArray();

这个代码比手动循环更容易受到人为错误的影响,并且结果数组的不变性比可变列表更不容易出错。为了获得这些好处,有必要熟悉使用lambdas来表示FuncAction结构。