我有2个可以为空的DateTimes,因此减去它们将导致可以为空的TimeSpan。我想在此致电.Value
。
但是,自动完成下拉列表认为括号内的类型是正常的TimeSpan。 .Value
不在列表中,当我使用任何建议时,它不会编译。当我手动输入.Value
时,它会编译。
如果只有一个DateTimes可以为空,则会出现同样的问题。如果我向TimeSpan?
添加DateTime?
会产生DateTime?
,也会发生这种情况。 Intellisense认为它是DateTime
。
这是Visual Studio智能感知的问题吗?我在更新3,我没有ReSharper。另一台计算机上的问题相同。
编辑:要清楚,我问的问题是为什么intellisense建议错误的类型。我知道要编写什么来使代码编译。
答案 0 :(得分:5)
同意,IS弄错了,并没有正确推断减法的结果是Nullable<TimeSpan>
,它推断出TimeSpan。你可以通过这样写它来敲打它:
var span = date1 - date2;
span.
现在 正确推断 span 变量的类型,您将在自动完成窗口中看到HasValue。否则在运行时根本不会慢,所以它是一个合理的解决方法。
您或我们无法对原始的oops做任何事情,但您可以在connect.microsoft.com上提交反馈报告。发布链接,以便我们投票。