在使用泛型作为异步方法的返回类型之前的一个问题让我想知道为什么下面的方法会抛出编译时错误:Thereturntypeofanasynchronousmethodmustbevoid,TaskorTaskpublicasyncTMyMethodAsync()whereT:Task{//此处不相关的代码返回一个Task}因为我们在编译时知道T总是一个Task或派生类型,为什么不这个工作?编辑我问的原因是方法可能返回任务或任务。假设方法可以返回,我不想重复代码。当然,这纯粹是理论上的,并非用于生产目的。编辑2LucianWischik找到了一篇很棒的文章:为什么必须异步返回任务三个问题:不清楚您要在这里实现什么,但基本上这行不通。我想不出MyMethodAsync的有效定义,该定义允许它返回从Task派生的genericT,而不知道编译时该类型是什么或采用某种类型的参数。如果您确实要返回Task或Task那么您可以更新您的签名以反映该事实并避免该问题。如果您确实需要从Task派生的某种类型,那么您需要重写您的逻辑,而不是返回Task或Task并包装其他类型。假设这是不可接受的,您将需要删除异步并自己处理状态机。以上就是C#学习教程的全部内容:使用泛型作为异步方法的返回类型。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
