2

メソッドを考えると:

public static bool IsDateValid(DateTime? date)
{
    if (date.HasValue ? date.GetValueOrDefault() < MinDate : false)
    {
        return false;
    }

    return date.GetValueOrDefault() < MaxDate;
}

null 合体演算子を使用するように if ステートメントを書き直すことは可能ですか?

4

1 に答える 1

7

関数全体を次のように置き換えることができます

return date.GetValueOrDefault() < MaxDate && Date > MinDate;

GetValueOrDefault()nullの場合、空DateTime(はDateTime.MinValue)を返しますが、それはそうではありません> MaxDate

あなたもそれを明示的に書くことができます:

return (date ?? DateTime.MinValue) < MaxDate && Date > MinDate;

ただし、それも必要ありません。

return Date > MinDate && date < MaxDate;

null許容型は、引数がnullの場合にfalseを返す比較演算子を解除しました。

于 2011-11-08T00:32:22.383 に答える