Func 代表现实世界使用
|
我最近一直在与委托
Func<T, TResult>
玩耍,并创建返回包含lambda的不同实例Func<T, TResult>
的方法,但我一直想出的是现实世界中关于为什么要返回(甚至创建这样的一个)的好主意。实例)。
在MSDN上有一个示例,他们执行以下操作...
Func<string, string> convertMethod = UppercaseString;
private static string UppercaseString(string inputString)
{
return inputString.ToUpper();
}
尽管它看起来很漂亮并且是一个有趣的概念,但我仍然看不到此类代码具有什么优势。
因此,这里有人可以提供任何必须使用ѭ0的真实示例吗,总的说来为什么要使用此委托?
没有找到相关结果
已邀请:
8 个回复
bab
提供程序时,您已经使用了表达式,但是对于LINQ-to-Objects,您已经使用了委托) 委托提供了一种将自己的行为注入另一个对象的方法。最常见的用法是事件。一个对象公开一个事件,并且您提供一个函数(无论是否匿名)在该事件触发时被调用。 如果您要问为什么要有
(和类似的代表),则有两个主要原因: 人们在代码中需要特定的委托人时,必须声明自己的简单委托人类型。尽管
和
代表不能涵盖所有情况,但它们很容易提供并涵盖了许多需要自定义代表的情况。 更重要的是,“ 0”委托在LINQ-to-Objects中广泛用于定义谓词。更具体地说,
。这使您可以定义一个谓词,该谓词采用
的强类型成员,然后使用lambda或普通函数返回布尔值,然后将该谓词传递给LINQ-to-Objects。
厘恼轨
那是12英镑。在创建简洁的代码时,这非常有用。一个真实的例子是我做过的许多塔防游戏之一,我用一条线计算了最接近塔的敌人:
厦惫
哩翔购
在此示例中,
不仅是lambda,而且还通过捕获
参数创建了一个闭包。换句话说,它创建一个函数,每次调用
都会不同。
播匣扦阔食
委托(以及其他重载)为您提供了用C#编写抽象的新方法。为了演示一些选项,这里有一些C#语言构造,可以使用委托编写:
这些是非常原始的,因此最好为它们使用语言构造。但是,它表明
和lambda表达式增加了相当多的表达能力。这样就可以编写新的结构,例如并行循环(使用.NET 4.0):
桔适丛
橙绥
董碘奴星