【问题标题】:Intellisense doesn't reflect nullable reference typesIntellisense 不反映可为空的引用类型
【发布时间】:2021-02-18 18:18:32
【问题描述】:

我有一个面向 .NET Standard 2.0 和 .NET 5.0 的 C# 程序(使用 <TargetFrameworks> 元素)。我在 .NET 5.0 上启用了可为空的引用类型。现在我得到了所有可以为空的引用类型警告,这正是我想要的。

但是,Intellisense 似乎没有显示正确的信息。例如,在 .NET 5.0 中,ToString() 现在返回 string?。但 Intellisense 向我显示它返回 string

此外,如果我去定义,那也表明它返回类型string

如何让 Intellisense 显示 .NET 5.0 签名?

【问题讨论】:

  • 可能是超载掉了它。
  • @DanielA.White:不,因为如果我从标记为返回类型string 的方法返回结果,我会收到“可能返回空引用”警告。
  • 那么这可能是一个错误。 bcl 类型返回非空值。 github.com/dotnet/runtime/blob/…
  • @DanielA.White:不是根据Microsoft
  • @DanielA.White:不,这是因为我的目标是 .NET Standard 和 .NET 5.0,而 Intellisense 使用的是 .NET Standard 数据。如果我只针对 .NET 5.0,那么它可以按预期工作。

标签: c# .net-5 c#-8.0 nullable-reference-types


【解决方案1】:

问题在于,虽然我针对的是框架的两个版本,但 Intellisense 选择了一个版本来从中获取信息。就我而言,它选择了第一个:

<TargetFrameworks>netstandard2.0;net5.0</TargetFrameworks>

如果我更改项目文件中框架的顺序,以使 .NET 5.0 先出现:

<TargetFrameworks>net5.0;netstandard2.0</TargetFrameworks>

Intellisense 现在向我显示 .NET 5.0 上的数据。

所以 Intellisense 使用的框架默认为列出的第一个。但是,您也可以从工具栏中的下拉菜单中选择使用哪个框架。

【讨论】:

    猜你喜欢
    • 2019-12-03
    • 2011-12-04
    • 2020-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    相关资源
    最近更新 更多