我使用Resharper来帮助语言功能,我有一个可以为空的DateTime字段。 Resharper建议使用以下语法:
TodayDate = paidDate?.ToString("d"),
它看起来像一个标准的表达,但我没有得到一个问号。我得到两个问号,我得到冒号。
一个解释将不胜感激。当paidDate为空时会发生什么?
我使用Resharper来帮助语言功能,我有一个可以为空的DateTime字段。 Resharper建议使用以下语法:
TodayDate = paidDate?.ToString("d"),
它看起来像一个标准的表达,但我没有得到一个问号。我得到两个问号,我得到冒号。
一个解释将不胜感激。当paidDate为空时会发生什么?
?.
是一个在C#中引入的新功能,它被称为 空条件运算符。它仅在何时评估方法调用 paidDate
不为null,并返回 null
代替。
它几乎相当于
TodayDate = paidDate == null ? null : paidDate.ToString("d");
如果您尝试调用返回值类型的方法 ?.
它将使整个事物回归 Nullable<T>
该值类型,例如
var myValue = paidDate?.Day;
将使 myValue
打字为 Nullable<int>
。