3

DateTimeNULLは?

私はこのコードを持っています:

ここから変数を継承します

namespace Transakcija
{
     public class Line
     {
        public System.DateTime DateOfProduction { get; set; }
     }
}

次に、ループごとに:

foreach (var rw_det in dt_stavke.Rows)
{
    var list = new List<Transakcija.Line>();
    var l = new Transakcija.Line();

     //DateOfProduction
    if (rw_det["DPRO02"].ToString().Length <= 0)
    {
        l.DateOfProduction = default(DateTime);
    }
    else
    {
        l.DateOfProduction = new DateTime();
        prod_date = rw_det["DPRO02"].ToString();
        DateTime pro_date = DateTime.ParseExact(prod_date, "dd.MM.yyyy", CultureInfo.InvariantCulture);
        string p_date = pro_date.ToString("yyyy-MM-dd");
        l.DateOfProduction = DateTime.Parse(p_date);
    }
}

したがって、値l.DateOfProductionは null である必要があります。私はこれを試しました:

DateTime? dt = null;
l.DateOfProduction = (DateTime)dt;

しかし、私はエラーが発生しました:nullable object must have a value

これは可能datetimeですか、変数に最小値を渡す必要がありますか?

4

3 に答える 3

8

DateTimeは値型なので、決して ではありませんnull。「値なし」の値が必要な場合は、Nullable<DateTime>略して or を使用しますDateTime?

于 2012-07-24T13:42:47.307 に答える
5

コンストラクターDateTime を使用して、nullable を割り当てることができます。

DateTime? dt = new Nullable<DateTime>(); 

プロパティnullを使用して、null 許容型であるかどうかを確認できます。HasValue

if(dt.HasValue)
{
    // now you can safely use dt.Value as DateTime, 
    // otherwise accessing the Value property raises an InvalidOperationException
    DateTime otherDate = dt.Value;
}
于 2012-07-24T13:45:32.180 に答える
1

この方法でDateTimeをNullableにすることができます

DateTime? dtNullable = new Nullable<DateTime>(); 

if(dtNullable.HasValue)
 l.DateOfProduction = dtNullable.Value;

PS: たとえば、null を許容しない DateTime を Null を許容する DateTime に渡す場合は、キャストが必要になります。

このような

DateTime? nullableDateTime = (DateTime?)nonNullableDateTime;
于 2012-07-24T13:49:15.873 に答える