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
必须为null。我试过这个:
DateTime? dt = null;
l.DateOfProduction = (DateTime)dt;
但是我收到了错误:nullable object must have a value
这是可能的,还是我必须将最小datetime
值传递给变量?
答案 0 :(得分:8)
DateTime
是一种值类型,因此不能永远不是null
。如果您需要“无价值”值,请使用Nullable<DateTime>
或简称DateTime?
答案 1 :(得分:4)
您可以使用constructor:
指定可为空的DateTime
DateTime? dt = new Nullable<DateTime>();
您可以使用HasValue
属性检查可空类型是否为null
:
if(dt.HasValue)
{
// now you can safely use dt.Value as DateTime,
// otherwise accessing the Value property raises an InvalidOperationException
DateTime otherDate = dt.Value;
}
答案 2 :(得分:1)
你可以这样使用Datetime Nullable
DateTime? dtNullable = new Nullable<DateTime>();
if(dtNullable.HasValue)
l.DateOfProduction = dtNullable.Value;
PS:例如,如果你将一个不可为空的DateTime传递给Nullable DateTime那么它将需要转换
喜欢这个
DateTime? nullableDateTime = (DateTime?)nonNullableDateTime;