我有一个在两个地方实现的接口(interface) I,例如:
interface I
{
Task DoSomething();
}
该接口(interface)具有异步任务 DoSomething 方法 API,然后在类 A 中实现,例如:
class A : I {....}
class B : I {....}
在类A中,DoSomething的实现如下,没问题:
public async Task DoSomething()
{
if (...)
{
await DoIt();
}
}
但是,在类 B 中,DoSomething() 的实现不应执行任何操作。 所以,它的实现看起来像这样:
public async Task DoSomething()
{
// nothing
}
这可以编译,但除了该方法无用之外,我不确定做这样的事情有多正确。
但是在这种情况下“无用”是可以的,因为它的实现只是因为实现接口(interface) I 的类 B 需要它。
我想知道这是否是实现返回异步任务但没有等待或返回的方法的正确方法?我知道此方法将简单地不执行任何操作并同步执行,因为没有对 await 的调用。
更新:在 SO 上也有人问过类似的问题,在问这个问题之前我已经检查了所有这些问题。没有人在问我在问什么
最佳答案
public Task DoSomething()
{
return Task.CompletedTask;
}
不需要 async
。
如果您使用的是旧版本的 .NET,请使用:
public Task DoSomething()
{
return Task.FromResult(0);
}
如果你发现你需要返回一个结果但你仍然不需要await
任何东西,试试;
public Task<Result> DoSomething()
{
return Task.FromResult(new Result())
}
或者,如果你真的想使用异步(不推荐);
public async Task<Result> DoSomething()
{
return new Result();
}
关于没有等待或返回的 C# 异步任务方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47187544/