空合并运算符中的这个额外询问是什么
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
值。
我有这个条件:
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
值。