3

DateTime值可以吗NULL

我有这个代码:

从这里我继承我的变量

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需要为空。我试过这个:

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 您可以使用构造函数分配可空值:

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

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:例如,如果您将不可为空的日期时间传递给可空的日期时间,则需要强制转换

像这样

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