2013-07-15 2 views
6

nullable DateTimes가 2 개인 경우,이를 빼면 Nullable TimeSpan이됩니다. 이걸 .Value에 전화하고 싶습니다.Visual Studio 2012에서 Nullable 형식을 인식하지 못합니다.

그러나, 자동 완성 드롭 다운 목록은 괄호 안의 유형이 정상 시간 범위라고 생각합니다. .Value이 목록에 없으며 제안 사항을 사용할 때 컴파일되지 않습니다. 수동으로 .Value을 입력하면 컴파일됩니다.

DateTimes 중 하나만 Null을 허용하는 경우에도 동일한 문제가 발생합니다. 또한 DateTime?TimeSpan?을 추가하면 DateTime?이됩니다. Intellisense는 이것이 DateTime이라고 생각합니다.

Visual Studio의 인텔리 센스에 문제가 있습니까? 나는 갱신 3에 있고, 나는 ReSharper가 없다. 다른 컴퓨터에서 같은 문제가 발생했습니다.

편집 : 분명히 말해서 인텔리 센스가 잘못된 유형을 제안하는 이유에 대해 묻고 있습니다. 나는 코드를 컴파일하기 위해 무엇을 써야할지 압니다.

+0

이상한, 당신이 캐스팅 할 때 일어나는 일은 Timespan ie입니다. '(TimeSpan) (date1 - date2) .'? – JMK

+0

@JMK 마지막으로 캐스팅을 수행하므로 동일한 동작입니다. 모든 것을 괄호 안에 넣으시겠습니까? '((TimeSpan?) (date1 - date2)) .Value'는 올바르게 작동합니다. – Tom

+0

호기심을 중심으로 묻는 것이 무엇인지 밝혀내는 데 관심이있을 것입니다. – JMK

답변

5

동의합니다. IS는이 오류를 가져오고 뺄셈의 결과가 Nullable<TimeSpan>이라는 것을 정확하게 추론하지 못하면 TimeSpan을 유추합니다. 당신이 대신처럼 작성하여 머리를 구타 할 수 있습니다

var span = date1 - date2; 
span. 

지금 올바르게 범위 변수의 유형을 추론 않습니다, 당신은 자동 완성 창에 HasValue을 볼 수 있습니다. 그렇지 않으면 런타임에 전혀 느리지 않으므로 합리적인 해결 방법입니다.

원래 oops에 대해 수행 할 수있는 작업이나 방법은 없지만 connect.microsoft.com에서 피드백 보고서를 제출할 수 있습니다. 우리가 투표 할 수 있도록 링크를 게시하십시오.

+0

고마워, 여기 있네. https://connect.microsoft.com/VisualStudio/feedback/details/793983/intellisense-inferring-incorrect-type – Tom

관련 문제