任何人都可以给我一个很好的解释,如何使用Lambda并给出一个很好的例子。我已经看过了,但我不知道它是什么或做了什么。
答案 0 :(得分:16)
lambda表达式用于创建匿名函数。这里将匿名函数分配给委托变量:
Func<int, int> increase = (a => a + 1);
然后您可以使用委托调用该函数:
var answer = increase(41);
通常使用lambda表达式将委托发送给方法,例如将委托发送到ForEach
方法,以便为列表中的每个元素调用它:
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.ForEach(n => Console.WriteLine(n));
答案 1 :(得分:4)
我做了一段时间的回复,我希望它可能有用:http://www.dontcodetired.com/blog/?tag=/lambda+expressions
答案 2 :(得分:2)
Lambda只是一个委托,它是一个匿名函数,您可以创建它以供以后执行。
Lambda Expression是一个表达式树形式的未编译委托,您可以在编译和执行之前对其进行操作。
答案 3 :(得分:2)
也许我有点过分了,但是,如果我是你,那么我首先考虑使用lambdas作为一种通过删除嵌套的foreach循环或前n个元素之类的东西缩短代码的好方法。
所以,如果你在经营酒店找一些便宜的房间,你可以(假设IEnumerable酒店):
cheapHotels = hotels.Where(h => h.PriceFrom < 50)
一旦开始点击你可以转移到更复杂的东西,这是一个随机的方法,我可以在我当前的项目中找到使用lambdas(可能从其他地方切口!):
private T DeserializeObject<T>(XmlDocument xDoc, string typeName)
{
Type type = AppDomain.CurrentDomain.GetAssemblies().SelectMany(a => a.GetTypes()).Single(t => t.FullName == typeName);
object o;
var serializer = new XmlSerializer(typeof(T));
using (TextReader tr = new StringReader(xDoc.InnerXml))
{
o = serializer.Deserialize(tr);
tr.Close();
}
return (T)o;
}