6

我有 2 个可为空的 DateTime,因此减去它们将产生一个可为空的 TimeSpan。我想呼吁.Value这个。

但是,自动完成下拉列表认为括号内的类型是正常的TimeSpan。.Value不在列表中,当我使用任何建议时,它不会编译。当我手动输入时它会编译.Value

如果只有一个 DateTime 可以为空,则会出现同样的问题。如果我将 a 添加TimeSpan?DateTime?结果 a 中,也会发生这种情况DateTime?。Intellisense 认为它是一个DateTime.

这是 Visual Studio 的智能感知的问题吗?我在更新 3,我没有 ReSharper。在另一台电脑上同样的问题。

编辑:要清楚,我在问一个问题,为什么智能感知会建议错误的类型。我知道写什么来编译代码。

4

1 回答 1

5

同意,IS 弄错了,并没有正确推断出减法的结果是 a Nullable<TimeSpan>,而是推断出 TimeSpan。你可以这样写,而不是把它敲在头上:

var span = date1 - date2;
span.

现在确实可以正确推断span变量的类型,您将在自动完成窗口中看到 HasValue。否则,这在运行时根本不会变慢,因此它是一个合理的解决方法。

您或我们对原始 oops 无能为力,但是您可以在 connect.microsoft.com 上提交反馈报告。发布链接,以便我们投票。

于 2013-07-15T14:08:51.847 回答