2016-06-14 2 views
0

У меня есть один Datetime? и один DateTime, оба они называют тот же метод, что и ниже. Как подойти к управлению System.DateTime? vs System.DateTime?DateTime и DateTime? объект как параметр

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

что вы подразумеваете под его управлением? –

+0

Должен ли я создать два метода init один для значений с нулевым значением, а другой - с возможностью недействительности? – hotspring

+0

это зависит от вас. мы не можем на это ответить. –

ответ

3

Я хотел бы сделать это:

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

Я не понимаю, почему вам нужно 2 различных реализаций SelectStartDate. Просто используйте это и удалите другой.

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

Функционально эквивалентная альтернатива: 'init = initDateTime.GetValueOrDefault (DateTime.Now);' – wablab

+2

Другой: 'init = initDateTime ?? DateTime.Now; ' – wablab

0

Просто делать то, что вы думаете, это лучшее, но есть два возможных решения я хотел бы рассмотреть вопрос об использовании. Первое решение заключается в том, что ваш конструктор DatePickerDialogView принимает в качестве параметра DateTime?, тогда вы можете просто проверить, является ли оно нулевым или нет. Другая возможность - проверить, является ли currentDate в SelectEndDate методом null и делать все, что вы хотите сделать с этой информацией.

Смежные вопросы