我有以下代码:
await _user?.DisposeAsync();
Visual Studio
突出显示此代码,说“可能的 NullReferenceException”
顺便说一句,没有await
Visual Studio
不显示此警告为什么NullReferenceException
在这里可能?
我有以下代码:
await _user?.DisposeAsync();
Visual Studio
突出显示此代码,说“可能的 NullReferenceException”
顺便说一句,没有await
Visual Studio
不显示此警告为什么NullReferenceException
在这里可能?
await null
会抛出一个NullReferenceException
. 因此,如果_user
为空,则_user?.DisposeAsync()
返回null
,并且await
将抛出。
你可以做:
if (_user != null)
{
await _user.DisposeAsync();
}
(_user
如果它可能在读取之间发生变化,您可能需要一个本地副本)
或者:
await _user?.DisposeAsync().AsTask() ?? Task.CompletedTask;
异步方法返回一个Task
可以等待的。如果_user
为 null 那么您将不会返回 aTask
但为 null
await 期待一个结果。如果 _user 为 null,则结果将为 null,因此会出现 NullReferenceException。