null合并运算符

时间:2016-08-23 17:33:04

标签: c# resharper ternary-operator c#-6.0 null-coalescing-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() ?? "";

它做什么/意味着什么?

1 个答案:

答案 0 :(得分:6)

这是一个空条件运算符。

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