0

以下のような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 の両方を使用できないのはなぜですか?staticif statement

編集: 期待値: _currentPollStartDate -> 2013-04-18 10:03:03 のようなもの

結果値: _currentPollStartDate -> 0001-01-01 00:00:00 (これは MAX 値でもありません)

4

3 に答える 3