.NET技术问询:如何将Task<T>转换为无类型参数的Task?
将Task转换为无类型Task的方法
在.NET体系里,Task<T>是Task的派生类,转换逻辑非常直接,核心就是利用这个继承关系:
直接隐式/显式转型
不管用F#还是C#,都能直接把Task<T>实例赋值给Task类型变量,或是直接传入只接受Task的方法。F#示例:
let getTask() = task { return () } // 直接将Task<unit>转换为Task类型 let plainTask: Task = getTask()C#示例:
Task<Unit> GetTask() => Task.FromResult(Unit.Value); // 隐式转换为Task,无需额外代码 Task plainTask = GetTask();链式调用场景
如果是在链式调用里需要转换,同样不用额外操作,直接传递Task<T>实例就行——因为接受Task的方法会自动兼容派生类实例。
内容的提问来源于stack exchange,提问作者Overlord Zurg
相关产品推荐
相关产品推荐

