等待空传播系统.空引用异常.



我有以下代码:

await _user?.DisposeAsync();

Visual Studio突出显示此代码,并指出"可能的 NullReferenceException">

顺便说一句,没有await Visual Studio不会显示此警告为什么NullReferenceException在这里是可能的?

await null会抛出一个NullReferenceException。因此,如果_user为 null,则_user?.DisposeAsync()将返回 null ,并且await将抛出。

你可以做:

if (_user != null)
{
    await _user.DisposeAsync();
}

(如果 _user 的本地副本可能在读取之间更改,则可能需要该副本(

或:

await (_user?.DisposeAsync() ?? ValueTask.CompletedTask);

(在 .NET 5 之前,您将需要:(

await (_user?.DisposeAsync().AsTask() ?? Task.CompletedTask);
异步

方法返回可以等待的Task。 如果_user为 null,那么您不会返回Task而是返回 null

await 期待一个结果。如果_user为 null,则结果将为 null,因此为 NullReferenceException。

相关内容

  • 没有找到相关文章

最新更新