Visual Studio 2012无法识别可空类型

时间:2013-07-15 12:01:14

标签: c# visual-studio-2012 intellisense

我有2个可以为空的DateTimes,因此减去它们将导致可以为空的TimeSpan。我想在此致电.Value

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

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

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

编辑:要清楚,我问的问题是为什么intellisense建议错误的类型。我知道要编写什么来使代码编译。

1 个答案:

答案 0 :(得分:5)

同意,IS弄错了,并没有正确推断减法的结果是Nullable<TimeSpan>,它推断出TimeSpan。你可以通过这样写它来敲打它:

var span = date1 - date2;
span.

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

您或我们无法对原始的oops做任何事情,但您可以在connect.microsoft.com上提交反馈报告。发布链接,以便我们投票。