空合并运算符中的这个额外询问是什么

What is this extra interrogation in null coalescence operator

我有这个条件:

if (dr_dados["DAT_SAIDA"] != null)
    {
        txtDataSaida.Text = "";
    }
    else
    {
        txtDataSaida.Text = dr_dados["DAT_SAIDA"].ToString();
    }

我正在使用 Jetbrain 的 ReSharper,它告诉我可以转换为三元运算。

于是,就变成了这样:

txtDataSaida.Text = (dr_dados["DAT_SAIDA"] != null) ? dr_dados["DAT_SAIDA"].ToString() : "";

但后来它告诉我可以转换为空合并操作,它给了我这个:

txtDataSaida.Text = dr_dados["DAT_SAIDA"]?.ToString() ?? "";

我有点知道空合并操作的作用,但有些不同,我以前从未见过,我想知道它是什么。

额外的审讯就在这里:

                                         v
txtDataSaida.Text = dr_dados["DAT_SAIDA"]?.ToString() ?? "";

它是什么do/mean?

它是一个空条件运算符。

它用于在实际执行成员访问之前检查是否为空。如果您要访问的成员实际上是 null,则不会抛出异常,而是返回一个 null 值。