2012-12-01 78 views
0

以下两种方法有什么区别?他们都返回完全相同(据我所知),所以我想知道为什么宁愿使用一个在另一个?Func <x,y>和Method(x,y)有什么区别?

有没有一种特定的情况,其中以下两种方法之一是更可取的? 或者是否有任何情况下使用func<>比正常方法更好?

private static int addThings(int x, int y) 
{ 
    return x*y; 
} 

private static Func<int,int,int> addMoreThings = (x,y) => 
{ 
    return x*y; 
}; 
+0

其中一种方法,另一种是变量。巨大差距。 –

回答

2

Func委托 - (什么C++程序员会调用一个强类型的函数指针)。

Func<int,int,int>意味着一个函数的委托,它接受两个整数并返回一个整数 - 任何这样的函数。

addThings的情况下,计算立即完成并返回结果。

addMoreThings的情况下,返回函数。它可以在以后被调用

如果没有更多的上下文,让代理版本允许您懒惰 - 使用策略模式,例如通过将策略分配给代理,很难推荐一个。

+0

@Thousand - http://msdn.microsoft.com/zh-cn/library/bb534647.aspx – Oded

相关问题