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

Phi*_*ter 0 c# resharper ternary-operator null-coalescing-operator c#-6.0

我有条件:

if (dr_dados["DAT_SAIDA"] != null)
    {
        txtDataSaida.Text = "";
    }
    else
    {
        txtDataSaida.Text = dr_dados["DAT_SAIDA"].ToString();
    }
Run Code Online (Sandbox Code Playgroud)

我正在使用Jetbrain的ReSharper,它告诉我可以转换成三元操作.

所以,它变成了这样:

txtDataSaida.Text = (dr_dados["DAT_SAIDA"] != null) ? dr_dados["DAT_SAIDA"].ToString() : "";
Run Code Online (Sandbox Code Playgroud)

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

txtDataSaida.Text = dr_dados["DAT_SAIDA"]?.ToString() ?? "";
Run Code Online (Sandbox Code Playgroud)

我有点知道null合并操作的作用,但是有一些不同的东西,我以前没见过的东西,我想知道它是什么.

这个额外的审讯就在这里:

                                         v
txtDataSaida.Text = dr_dados["DAT_SAIDA"]?.ToString() ?? "";
Run Code Online (Sandbox Code Playgroud)

它是什么意思/是什么意思?

Mat*_*ero 6

它是一个空条件运算符.

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