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

时间:2017-02-28 11:33:20

标签: c#

我正在尝试学习使用null条件运算符,但似乎无法使其工作,

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

DateIn是可以为空的DateTimeList<Datetime?>)列表。

我做了调试,DateIn[u]中的所有值都为null。

我做错了什么?

3 个答案:

答案 0 :(得分:6)

如果DateIn数组中的所有值均为null,则代码会抛出NullReferenceException

您可以在此处使用null-propagation-operator

string datetest = DOInfolist[i].RentalItem.SimCard.DateIn[u]?.ToShortDateString() ?? "Empty";

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

答案 1 :(得分:2)

你有一个错误。首先按null检查HasValue值并使用单个?而不是??,如下面的代码段所示:

string datetest = DOInfolist[i].RentalItem.SimCard.DateIn[u].HasValue ? DOInfolist[i].RentalItem.SimCard.DateIn[u].ToShortDateString() : "Empty";

答案 2 :(得分:1)

在您的情况下,该作业的正确工具将是Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub If Target = Me.Range("A1") Then Select Case UCase(Target.Value) Case "A" Target.Value = "Auto" Case "C" Target.Value = "Close" Case "T" Target.Value = "Trigger" End Select End If End Sub 方法,如果nullable没有值,则提供默认值

GetValueOrDefault