我正在尝试理解新的异步/等待模式,我有一个问题找不到答案,即如果我打算从其他异步函数调用这些方法,我是否应该使用async修饰我的方法,或者只在适当的时候返回Task
s?
换句话说,A、B或C类中哪个最好,为什么?
class A<T>
{
public async Task<T> foo1() //Should be consumed
{
return await foo2();
}
public async Task<T> foo2() //Could be consumed
{
return await foo3();
}
private async Task<T> foo3() //Private
{
return await Task.Run(...);
}
}
class B<T>
{
public async Task<T> foo1() //Should be consumed
{
return await foo2();
}
public async Task<T> foo2() //Could be consumed
{
return await foo3();
}
private Task<T> foo3() //Private
{
return Task.Run(...);
}
}
class C<T>
{
public async Task<T> foo1() //Should be consumed
{
return await foo2();
}
public Task<T> foo2() //Could be consumed
{
return foo3();
}
private Task<T> foo3() //Private
{
return Task.Run(...);
}
}
在装饰方法方面,过度装饰似乎是多余的,因此我自然倾向于使用 C
,但同时,如果不使用 await
关键字,与 Task<T>
一起工作会感到有些尴尬。