当我执行以下操作时,我得到:
inv.RSV = pid.RSVDate
我得到以下内容:无法隐式转换类型System.DateTime?到System.DateTime。
在这种情况下,inv.RSV是DateTime,pid.RSVDate是DateTime?
我尝试了以下但未成功:
if (pid.RSVDate != null)
{
inv.RSV = pid.RSVDate != null ? pid.RSVDate : (DateTime?)null;
}
如果pid.RSVDate为null,我喜欢不分配inv.RSV任何东西,在这种情况下它将为null。
答案 0 :(得分:16)
DateTime不能为空。它的默认值为DateTime.MinValue
。
您想要做的是以下内容:
if (pid.RSVDate.HasValue)
{
inv.RSV = pid.RSVDate.Value;
}
或者,更简洁:
inv.RSV = pid.RSVDate ?? DateTime.MinValue;
答案 1 :(得分:8)
您需要使RSV
属性也可以为空,或者为RSVDate
为空的情况选择默认值。
inv.RSV = pid.RSVDate ?? DateTime.MinValue;
答案 2 :(得分:2)
因为inv.RSV不是可空字段,所以它不能为NULL。初始化对象时,它是一个默认的inv.RSV到一个空的DateTime,就像你说的那样
inv.RSV = new DateTime()
因此,如果要将inv.RSV设置为pid.RSV(如果它不是NULL),或者默认的DateTime值为null,请执行以下操作:
inv.RSV = pid.RSVDate.GetValueOrDefault()
答案 3 :(得分:1)
如果被分配为DateTime
而被分配的是DateTime?
,则可以使用
int.RSV = pid.RSVDate.GetValueOrDefault();
如果DateTime
的默认值不理想,则支持重载,允许您指定默认值。
如果pid.RSVDate为null,我不想在其中分配inv.RSV case它将为null。
int.RSV
不会为空,因为您已经说过它是DateTime
,而不是可以为空的类型。如果它从未被您指定,则它将具有默认值类型,即DateTime.MinValue
或1月1日。
inv.RSV开头为null。我怎么说不更新它没有pid.RSVDate
的值
同样,根据您对属性的描述,这只是不能。但是,如果一般来说,如果inv.RSV
为空,您不想更新pid.RSVDate
(并且您的语言只是混淆了),那么您只需编写if
项检查在任务周围。
if (pid.RSVDate != null)
{
inv.RSV = pid.RSVDate.Value;
}
答案 4 :(得分:0)
pid.RSVDate
有可能是null
,而inv.RSV
没有,所以如果RSVDate
是null
会发生什么?
您需要在 -
之前检查值是否为空if(pid.RSVDate.HasValue)
inv.RSV = pid.RSVDate.Value;
但是如果RSVDate为null,inv.RSV的值是多少? 总是是否会成为此酒店的约会对象?如果是这样,您可以使用??
运算符指定默认值。
pid.RSV = pid.RSVDate ?? myDefaultDateTime;