2013-07-15 15 views
6

Ich habe 2 Nullable DateTimes, also subtrahieren sie führt zu einem Nullable TimeSpan. Ich möchte dazu .Value anrufen.Visual Studio 2012 erkennt keine Nullable-Typen

jedoch die automatische Vervollständigung Dropdown-Liste der Ansicht, dass die Art in den Klammern eine normale Timespan ist. .Value ist nicht in der Liste, und wenn ich einen der Vorschläge verwende, kompiliert es nicht. Es kompiliert, wenn ich .Value manuell eintippe.

Das gleiche Problem tritt auf, wenn nur eine der DateTimes NULL-Werte zulässig sind. Es tritt auch auf, wenn ich einen TimeSpan? zu einem DateTime? hinzufüge, der in DateTime? resultiert. Intellisense denkt, dass es ein DateTime ist.

Ist dies ein Problem mit Visual Studio intellisense? Ich bin bei Update 3, ich habe kein ReSharper. Das gleiche Problem auf einem anderen Computer.

Bearbeiten: um klar zu sein, stelle ich eine Frage darüber, warum Intellisense den falschen Typ vorschlägt. Ich weiß, was ich schreiben soll, um den Code kompilieren zu lassen.

+0

Seltsam, was passiert, wenn Sie Besetzung ist als Zeitspanne, dh. '(TimeSpan) (Datum1 - Datum2) .'? – JMK

+0

@JMK es tut das Casting zuletzt, also das gleiche Verhalten. Willst du das Ganze in Klammern setzen? '((TimeSpan?) (Date1 - date2)). Value' funktioniert korrekt. – Tom

+0

War vor allem aus Neugier gefragt, wird interessiert sein zu wissen, wie es sich herausstellt :) – JMK

Antwort

5

Einverstanden, IS bekommt das falsch und folgert nicht richtig, dass das Ergebnis der Subtraktion ist Nullable<TimeSpan>, es leitet TimeSpan. Sie können es über den Kopf hauen, indem es wie folgt statt zu schreiben:

var span = date1 - date2; 
span. 

Jetzt ist nicht korrekt den Typ der Variablen Spanne schließen, sehen Sie HasValue in der Auto-Vervollständigung Fenster. Dies ist ansonsten zur Laufzeit nicht langsamer, daher ist es eine vernünftige Lösung.

Nichts, was Sie oder wir tun können über die ursprünglichen oops, können Sie jedoch einen Bericht über die Rückmeldung bei connect.microsoft.com. Veröffentlichen Sie einen Link, damit wir dafür stimmen können.

+0

Danke, hier gehen Sie https://connect.microsoft.com/VisualStudio/feedback/details/793983/intellisense-inferring-incorrect-type – Tom

Verwandte Themen