Mar*_*lát 2 c# linq lambda async-await
这是一个愚蠢的问题但不知怎的,它让我觉得我错过了一些东西.异步lambda和普通方法的执行有什么区别吗?像这样
var tasks = list.Select(async c => { /* await somewhere */});
await Task.WhenAll(tasks);
Run Code Online (Sandbox Code Playgroud)
然后
async Task<object> GetSomething(object c) { /* await somewhere */}
// ...
var task = list.Select(GetSomething);
await Task.WhenAll(tasks);
Run Code Online (Sandbox Code Playgroud)
编辑:我问,因为我有误解,如果lambda的行为可能与普通方法不同.如果lambda和方法都具有相同的主体,lambda可能会创建一个void任务吗?或执行不会按预期工作?
谢谢,我没想到快速反应!
小智 5
lambda创建匿名方法或表达式树,具体取决于它是在接受委托还是Expression<...>类型的上下文中使用.在那些创建匿名方法的情况下,它就像你明确地编写方法一样.捕获的变量可能会在方法定义的位置发生变化,但它始终是运行时所看到的真实方法.该async关键字不会改变这一点.