具有可空日期时间的C#Null条件运算符

Blo*_*ops 3 c#

我试图学习使用null条件运算符,但似乎无法让它工作,

string datetest = DOInfolist[i].RentalItem.SimCard.DateIn[u].Value.ToShortDateString() ?? "Empty";
Run Code Online (Sandbox Code Playgroud)

DateIn是一个nullable DateTime(List<Datetime?>)列表.

我做了调试,所有的值DateIn[u]都给了null.

我究竟做错了什么?

Ren*_*ogt 6

如果DateIn数组中的所有值都是null,那么您的代码将抛出一个NullReferenceException.

您可以在这里使用null-propagation-operator:

string datetest = DOInfolist[i].RentalItem.SimCard.DateIn[u]?.ToShortDateString() ?? "Empty";
Run Code Online (Sandbox Code Playgroud)

此operator(?.)现在返回一个可为空的字符串.如果DateIn[u]有值,ToShortDateString()则调用并且运算符返回带有返回值的可空字符串.
如果DateIn[u]null运营商的回报null了.