以下のような2つの静的変数があります
private static DateTime _currentPollStartDate = DateTime.MinValue; //As Default
private static DateTime _currentPollEndDate = DateTime.MinValue; //As Default
メソッドで、値を設定しようとします。
public void ProcessItems()
{
var Items = GetItems();
//In here, it reaches inside
if (Items.HasItems)
{
//Items[0].PollStartDate.HasValue is TRUE
//I can NOT set either Items[0].PollStartDate.Value or DateTime.MaxValue
_currentPollStartDate = Items[0].PollStartDate.HasValue ? Items[0].PollStartDate.Value : DateTime.MaxValue;
//Items[0].PollEndDate.HasValue is TRUE
//I can NOT set either Items[0].PollEndDate.Value or DateTime.MaxValue
_currentPollEndDate = Items[0].PollEndDate.HasValue ? Items[0].PollEndDate.Value : DateTime.MaxValue;
}
//...
}
しかし、これを行うIF
と、上記の問題は発生しません。なぜですか?
public void ProcessItems()
{
var Items = GetItems();
//In here, it reaches inside
if (Items.HasItems)
{
if (Items[0].PollStartDate.HasValue)
_currentPollStartDate = Items[0].PollStartDate.Value;
if (Items[0].PollEndDate.HasValue)
_currentPollEndDate = Items[0].PollEndDate.Value;
}
//...
}
また、変数を宣言すると、最初のコードのように使用してもnot static
問題が解決します。しかし、最初のコードでとas の両方を使用できないのはなぜですか?static
if statement
編集: 期待値: _currentPollStartDate -> 2013-04-18 10:03:03 のようなもの
結果値: _currentPollStartDate -> 0001-01-01 00:00:00 (これは MAX 値でもありません)