C# Visual Studio 2012无法识别可为空的类型
我有2个可为空的日期时间,所以减去它们将得到一个可为空的时间跨度。我想就此调用C# Visual Studio 2012无法识别可为空的类型,c#,visual-studio-2012,intellisense,C#,Visual Studio 2012,Intellisense,我有2个可为空的日期时间,所以减去它们将得到一个可为空的时间跨度。我想就此调用.Value 但是,“自动完成”下拉列表认为括号内的类型是正常的时间跨度.Value不在列表中,当我使用任何建议时,它都不会编译。当我手动键入.Value时,它会编译 如果只有一个日期时间可为空,则会发生相同的问题。如果将TimeSpan?添加到DateTime?中,则会产生DateTime?。Intellisense认为这是一个DateTime 这是VisualStudio的intellisense的问题吗?我在更
.Value
但是,“自动完成”下拉列表认为括号内的类型是正常的时间跨度.Value
不在列表中,当我使用任何建议时,它都不会编译。当我手动键入.Value
时,它会编译
如果只有一个日期时间可为空,则会发生相同的问题。如果将TimeSpan?
添加到DateTime?
中,则会产生DateTime?
。Intellisense认为这是一个DateTime
这是VisualStudio的intellisense的问题吗?我在更新3,我没有重新竖琴。在另一台计算机上出现同样的问题
编辑:我想问一个问题,为什么intellisense建议使用错误的类型。我知道要编写什么来编译代码。同意,IS错误地推断出减法的结果是可空的,它推断出时间跨度。你可以这样写,把它打到头上:
var span = date1 - date2;
span.
现在,如果is没有正确推断span变量的类型,您将在自动完成窗口中看到HasValue。否则,这在运行时一点也不慢,所以这是一个合理的解决方法
对于原始oops,您或我们无能为力,但您可以在connect.microsoft.com上提交反馈报告。发布一个链接,这样我们就可以投票了。奇怪的是,当你投Timespan的时候会发生什么事,即
(Timespan)(date1-date2)。
?@JMK投最后一个,所以同样的行为。你的意思是把整件事放在括号里吗<代码>((TimeSpan?)(date1-date2))。值工作正常。主要是出于好奇而询问,将有兴趣知道结果是什么:)是否有人有任何较旧版本的Visual Studio可用于测试此功能?已确认VS 2008上存在类似行为:谢谢,开始吧