在c#resharper建议的"条件访问"中,null给了我什么?

Pet*_*ner 14 c#

我使用Resharper来帮助语言功能,我有一个可以为空的DateTime字段.Resharper建议使用以下语法:

 TodayDate = paidDate?.ToString("d"),
Run Code Online (Sandbox Code Playgroud)

它看起来像一个标准的表达,但我没有得到一个问号.我得到两个问号,我得到冒号.

一个解释将不胜感激.当paidDate为空时会发生什么?

Mar*_*zek 23

?.是C#中引入的一个新特性,它被称为Null条件运算符.它仅在paidDate非null 时才计算方法调用,null而是返回.

它几乎相当于

TodayDate = paidDate == null ? null : paidDate.ToString("d");
Run Code Online (Sandbox Code Playgroud)

如果你尝试调用一个返回值类型的方法,?.它将使整个事物返回Nullable<T>该值类型,例如

var myValue = paidDate?.Day;
Run Code Online (Sandbox Code Playgroud)

myValue打字输入Nullable<int>.