.net-将ValueTask<T>转换为非通用ValueTask
发布时间:2022-03-29 16:53:42 222
相关标签:
这里问的问题和这里有一个旨在为其创建一个明确的解决方案。“推荐代码”如下所示:
public static ValueTask AsValueTask(this ValueTask valueTask)
{
if (valueTask.IsCompletedSuccessfully)
{
valueTask.GetResult();
return default;
}
return new ValueTask(valueTask.AsTask());
}
这个答案不是最新的——ValueTask不公开GetResult()(仅公开结果属性)——问题是:
- 我们是否需要从ValueTask中“提取”结果(以“释放”可能在此ValueTask下运行的IValueTaskSource)?
- 如果是:
- 是因为
.GetAwaiter()
上面没有的电话? - 或者是一个虚假的电话,以财产是保证工作
var fake = valueTask.Result;
? 总是(我害怕死代码消除。) - 如果不是,那么像下面这样的直接实现是否足够(并且是最优的)?
public static ValueTask AsNonGenericValueTask( in this ValueTask valueTask )
{
return valueTask.IsCompletedSuccessfully ? default : new ValueTask( valueTask.AsTask() );
}
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报