您以何种方式使用C#Lambda表达式?

时间:2008-12-13 13:43:31

标签: c# .net c#-3.0 lambda

倒入你的帖子。我将从一对夫妇开始,让我们看看我们可以收集多少。

提供内联事件处理程序,如

button.Click += (sender,args) =>
{
};

查找集合中的项目

 var dogs= animals.Where(animal => animal.Type == "dog");

用于迭代集合,例如

 animals.ForEach(animal=>Console.WriteLine(animal.Name));

让他们来!!

7 个答案:

答案 0 :(得分:3)

返回自定义对象:

var dude = mySource.Select(x => new {Name = x.name, Surname = x.surname});

答案 1 :(得分:2)

一行函数

Func<int, int> multiply = x => x * 2;
int y = multiply(4);

答案 2 :(得分:2)

这是一个稍微不同的一个 - 您可以使用它们(like this)来模拟C#中缺少的“infoof”/“nameof”运算符 - 也就是说,不要将属性名称硬编码为字符串,而是可以使用lambda。这意味着它在编译时验证(不能使用哪些字符串)。

显然这是一个性能成本,因此“只是为了好玩”,但有趣......

答案 3 :(得分:1)

使用方法调用从多线程组件事件更新UI

void Task_Progress(object sender,TaskProgressArgs  e)
{
    BeginInvoke(new MethodInvoker(() => UpdateProgress(e)));
}

答案 4 :(得分:0)

创建累加器。

    static Func<int, int> Foo(int n)
    {
        return a => n += a;
    }

请注意这里的闭包使用情况。它正在创建一个累加器,它“记住”调用之间的n值 - 没有类或实例变量。

答案 5 :(得分:0)

对于Linq的集合操作:

public Double GetLengthOfElements(string[] wordArr) {

   double count = wordArr.Sum(word => word.Length);
   return count;
}

确实使用foreach节拍

答案 6 :(得分:-1)

表达未命名的功能。