【发布时间】:2020-12-14 02:38:39
【问题描述】:
使用 C#8,Visual Studio 2019 16.7.2,给出以下 C# 代码:
#nullable enable
public async Task<string> GetStringAsync(); ...
public async void Main()
{
var theString = await GetStringAsync();
...
}
Intellisense 悬停在theString 上会显示局部变量(字符串?)theString
我的 GetStringAsync 方法从不返回可为空的字符串,但该变量被推断为可为空。
这是一个智能感知错误吗?或者,由于await 的某些工作方式,theString 实际上可能为空,是否还有更深层次的事情发生?
【问题讨论】:
-
通过GitHub issue 重定向到编译器团队。我们应该很快得到答案,这是一个错误,不是错误,还是设计使然。
-
这不是 vs 2019 版本“Microsoft Visual Studio Community 2019 16.6.5”的行为。在这个版本中,智能感知显示“字符串”。
-
但是,如果您将
theString声明为string theString,它将是string对吗? -
Intellisense 还会向您显示一条消息,例如:“'theString' is not null here.”,因此您需要正确/安全地使用该变量的信息应该随时可用。
标签: c# visual-studio async-await nullable-reference-types