2

使用迭代器,以下通用委托是可能的:

public delegate IEnumerable<TOut> MyDelegate<TIn>(TIn param1);

使用 C# 5.0 CTP 中的新 async/await,我希望能够创建类似的委托,如下所示:

public delegate async TOut MyDelegate<TIn>(TIn param1);

我在这方面找不到 C# 5.0 规范或任何帮助。有谁知道这是怎么写的,或者如果不能写,为什么?

谢谢!

4

1 回答 1

5

async是实现细节,而不是接口规范。async委托没有意义。

任何返回“等待”的方法(例如TaskTask<T>)都可以与await.

因此,“异步委托”将是任何返回TaskTask<T>(或任何其他类型的可等待)的委托类型。在你的情况下:

public delegate Task<TOut> MyDelegate<TIn, TOut>(TIn param1);
于 2011-12-07T01:32:25.110 回答