以以下方法为例:
public async ValueTask<int> MyMethod() {
return await GetMyIntegerWithTask();
}
public async Task<int> GetMyIntegerWithTask() {
if (/*in hot path*/) {
return await SynchronousMethodThatUsesTask();
}
return await AsynchronousMethodThatUsesTask();
}
public Task<int> SynchronousMethodThatUsesTask() {
int value = new Random().Next();
return Task.FromResult(value);
}
public async Task<int> AsynchronousMethodThatUsesTask() {
//some asynchronous calculation
}
使用ValueTask
作为返回类型是否MyMethod
仍然具有相关的优势,ValueTask
因为我希望大部分时间我的代码将同步执行(即使我依赖于返回Task
而不是同步方法ValueTask
)?