倒入你的帖子。我将从一对夫妇开始,让我们看看我们可以收集多少。
提供内联事件处理程序,如
button.Click += (sender,args) =>
{
};
在集合中查找项目
var dogs= animals.Where(animal => animal.Type == "dog");
用于迭代集合,例如
animals.ForEach(animal=>Console.WriteLine(animal.Name));
让他们来!!
返回一个自定义对象:
var dude = mySource.Select(x => new {Name = x.name, Surname = x.surname});
一根线功能
Func<int, int> multiply = x => x * 2;
int y = multiply(4);
这是一个稍微不同的 - 您可以使用它们(像这样)来模拟 C# 中缺少的“infoof”/“nameof”运算符 - 即,您可以使用 lambda,而不是将属性名称硬编码为字符串. 这意味着它在编译时被验证(哪些字符串不能)。
这显然有性能成本,因此“只是为了好玩”,但很有趣......
使用方法调用程序从多线程组件事件更新 UI
void Task_Progress(object sender,TaskProgressArgs e)
{
BeginInvoke(new MethodInvoker(() => UpdateProgress(e)));
}
创建累加器。
static Func<int, int> Foo(int n)
{
return a => n += a;
}
注意这里的闭包用法。它正在创建一个累加器,在调用之间“记住” n 的值 - 没有类或实例变量。
对于 Linq 的聚合操作:
public Double GetLengthOfElements(string[] wordArr) {
double count = wordArr.Sum(word => word.Length);
return count;
}
使用 foreach 确保节拍
表达一个未命名的函数。