2016-06-14 16 views
0

Datetime?DateTimeの2つがあり、どちらも同じメソッドを呼び出します。 System.DateTime?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

2つのinitメソッドを1つはnull可能に、もう1つはnull不可にする必要がありますか? – hotspring

+0

それはあなた次第です。合理的に答えることはできません。 –

答えて

3

私はこれを行うだろう:

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

あなたがSelectStartDateの2つの異なる実装を必要とする理由私は理解していません。ちょうどこの1つを使用し、他の1つを削除します。

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

機能的に同等の代替方法をお読みください: 'init = initDateTime.GetValueOrDefault(DateTime.Now);' – wablab

+2

もう一つ、 'init = initDateTime ?? DateTime.Now; ' – wablab

0

ちょうどあなたが最高だと思うが、私は使用して検討する2つの解決策があるものは何でも。 最初の解決策は、DatePickerDialogViewコンストラクタがパラメータとしてDateTime?を受け取り、nullであるかどうかを確認することだけです。 SelectEndDateメソッドのcurrentDateがヌルであるかどうかを確認し、その情報で何をしたいかを確認することもできます。

関連する問題