Lambda 解释和它是啥以及一个很好的例子[重复]

Posted

技术标签:

【中文标题】Lambda 解释和它是啥以及一个很好的例子[重复]【英文标题】:Lambda Explanation and what it is as well as a good example [duplicate]Lambda 解释和它是什么以及一个很好的例子[重复] 【发布时间】:2011-01-20 23:19:24 【问题描述】:

谁能给我一个很好的解释如何使用 Lambda 并举一个很好的例子。我见过它,但我不知道它是什么或做什么。

【问题讨论】:

我强烈建议不要访问该网站,因为它在我看来像是垃圾广告。 【参考方案1】:

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));

【讨论】:

感谢您的回答。我可以看到它的巨大力量以及它可以节省多少时间 还可以从 lambda 内部访问外部函数范围内的变量。因此,在上面的示例中,您可以访问 lambda 表达式中的列表对象。【参考方案2】:

不久前我发了一个帖子,希望对你有用:http://www.dontcodetired.com/blog/?tag=/lambda+expressions

【讨论】:

【参考方案3】:

Lambda 只是一个委托,它是一个匿名函数,您可以创建它以供以后执行。

Lambda 表达式是表达式树形式的未编译委托,您可以在编译和执行之前对其进行操作。

http://msdn.microsoft.com/en-us/library/bb397687.aspx

【讨论】:

Lamda 表达式不是委托。它可以很容易地转换为委托,但它也可以转换为表达式树,它不适用于委托。见msdn.microsoft.com/en-us/library/bb397951.aspx【参考方案4】:

也许我有点简单化了,但是,如果我是你,首先我会认为 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;


【讨论】:

以上是关于Lambda 解释和它是啥以及一个很好的例子[重复]的主要内容,如果未能解决你的问题,请参考以下文章

布尔逻辑和真值表解释

python的lambda函数是啥?

“发射导弹”的由来是啥?

每个网址中 r'^ 图标的实际含义是啥?任何人都可以详细解释他的意思是啥以及这有多重要[重复]

不可变是啥意思?

你能用一个好的 C# 例子来解释 Liskov 替换原则吗? [关闭]