问题
With Iterators, the following generic delegate is possible:
public delegate IEnumerable<TOut> MyDelegate<TIn>(TIn param1);
With the new async/await in C# 5.0 CTP, I expect to be able to create the analogous delegate as follows:
public delegate async TOut MyDelegate<TIn>(TIn param1);
I can't find the C# 5.0 spec or any help in this regard. Anyone know how this can be written or if it can't be written and why?
Thanks!
回答1:
async
is an implementation detail, not an interface specification. An async
delegate doesn't make sense.
Any method that returns an "awaitable" (such as Task
or Task<T>
) can be used with await
.
So an "asynchronous delegate" would be any delegate type that returns Task
or Task<T>
(or any other kind of awaitable). In your case:
public delegate Task<TOut> MyDelegate<TIn, TOut>(TIn param1);
来源:https://stackoverflow.com/questions/8407227/async-generic-delegate-in-c-sharp-5-0