我一直在关注关于c# 5.0中新的async
特性的新公告。我对延续传递方式和新的c#编译器对Eric Lippert's post中的代码片段所做的转换有了基本的了解
async void ArchiveDocuments(List<Url> urls)
{
Task archive = null;
for(int i = 0; i < urls.Count; ++i)
{
var document = await FetchAsync(urls[i]);
if (archive != null)
await archive;
archive = ArchiveAsync(document);
}
}
我知道有些语言通过带有当前值的调用(callcc
)实现了本机延续,但我并不真正理解它是如何工作的,或者它到底做了什么。
所以问题来了:如果Anders等人。决定咬紧牙关,只在c# 5.0中实现callcc
,而不是async
/await
的特殊情况,那么上面的代码片段会是什么样子呢?
https://stackoverflow.com/questions/4070237
复制相似问题