2016-06-14 18 views
0

Ich habe eine Datetime? und eine DateTime, die beide die gleiche Methode wie folgt aufrufen. Wie sollte ich angehen, um System.DateTime? vs System.DateTime zu handhaben?DateTime und DateTime? Objekt als Parameter

Main.cs

void SelectStartDate(DateTime currentDate, Action<DateTime> setter) 
{ 
    var dialog = new DatePickerDialogView(currentDate); 
} 

void SelectEndDate(DateTime? currentDate, Action<DateTime> setter) 
{ 
    var dialog = new DatePickerDialogView(currentDate); 
} 

DatePickerDialogView.cs

public DatePickerDialogView(DateTime initDateTime) 
{ 
    init = initDateTime; 
} 
+2

was meinst du mit handle it? –

+0

Sollte ich zwei Init-Methoden für NULL-Werte und andere für NULL-Werte erstellen? – hotspring

+0

das liegt an dir. Das können wir nicht vernünftig beantworten. –

Antwort

3

Ich würde dies tun:

public DatePickerDialogView(DateTime? initDateTime) 
{ 
    init = initDateTime.HasValue? initDateTime.Value : DateTime.Now; //default to current date 
} 

Ich verstehe nicht, warum Sie benötigen zwei verschiedene Implementierungen von SelectStartDate. Benutze einfach dieses und entferne das andere.

void SelectEndDate(DateTime? currentDate, Action<DateTime> setter) 
+1

Funktional äquivalente Alternative: 'init = initDateTime.GetValueOrDefault (DateTime.Now);' – wablab

+2

Eine andere: 'init = initDateTime ?? DateTime.Now; ' – wablab

0

Genau das tun, was auch immer Sie denken, das Beste ist, aber es gibt zwei mögliche Lösungen, die ich in Betracht ziehen würde verwenden. Erste Lösung ist, dass Ihr -Konstruktor DateTime? als Parameter verwendet, dann können Sie einfach überprüfen, ob es null ist oder nicht. Eine andere Möglichkeit ist es zu überprüfen, ob currentDate in SelectEndDate Methode null ist und was Sie mit dieser Information tun wollen.

Verwandte Themen