[英]C# Null Conditional Operator with nullable datetime
我试图学习使用null条件运算符,但似乎无法让它工作,
string datetest = DOInfolist[i].RentalItem.SimCard.DateIn[u].Value.ToShortDateString() ?? "Empty";
DateIn
是可以为空的DateTime
List<Datetime?>
( List<Datetime?>
)。
我做了调试, DateIn[u]
所有值都为null。
我究竟做错了什么?
如果DateIn
数组中的所有值都为null
,则代码将抛出NullReferenceException
。
您可以在这里使用null-propagation-operator :
string datetest = DOInfolist[i].RentalItem.SimCard.DateIn[u]?.ToShortDateString() ?? "Empty";
此运算符( ?.
)现在返回一个可空字符串。 如果DateIn[u]
具有值,则调用ToShortDateString()
并且运算符返回带有返回值的可空字符串。
如果DateIn[u]
为null
则运算符也返回null
。
你有一个错误。 首先通过HasValue
检查null
值并使用单个?
不是双倍??
像下面的代码片段:
string datetest = DOInfolist[i].RentalItem.SimCard.DateIn[u].HasValue ? DOInfolist[i].RentalItem.SimCard.DateIn[u].ToShortDateString() : "Empty";
在你的情况下,该作业的正确工具将是GetValueOrDefault
方法,如果nullable没有值,则提供默认值
var datetest = DOInfolist[i].RentalItem.SimCard.DateIn[u]
.GetValueOrDefault(defaultDate);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.