我应该使用Func <t>代替私有方法吗?</t>

时间:2012-04-21 07:22:09

标签: c# func class-members

我在这里发布它而不是代码审查,因为我想知道执行程序是否因此而表现不同(可能是微妙的)。

是一种私人方法:

    private int Foo()
    {
        return Bar().Bat();
    }

与私人Func有什么不同?

    private Func<int> Foo = () => Bar().Bat();

我这样做的唯一原因是使代码更紧凑。

3 个答案:

答案 0 :(得分:2)

没有太大区别,但

  • 您定义模板化类型int(可能类型安全,即使它在当前提供的代码中不可见)

  • 你可以像参数一样使用该函数传递给另一个函数,你可以自然地在第一个函数中执行,但在第一种情况下,你需要声明一个delegate类型。 / p>

  • 第三个更紧凑,但第一个是更多可读,imo,所以如果你不需要一些“功能”的东西,我会选择第一个。

答案 1 :(得分:0)

Funcdelegate s并封装了任何具有相同signatur og Func的方法。用于分层我建议您使用Private Methods

答案 2 :(得分:0)

使用Func,您实际上是在保存对匿名方法的引用。编译器从中创建一个命名方法,而你正在做的就是保存一个额外的引用。

这不是太大的交易,没有太大的区别,除了标准是命名方法。它更具逻辑性和可读性。