【问题标题】:Setting a SqlParameter and checking if it's null, ?? vs? [duplicate]设置一个 SqlParameter 并检查它是否为空,??与? [复制]
【发布时间】:2018-11-26 21:45:33
【问题描述】:

最近我了解到,您可以在设置 SqlParameter 的值时检查值是否为空,如果为空,则设置为空。这是使用空合并运算符??,非常简单:

cmd.Parameters.Add(new SqlParameter("ID", ID.Text ?? (object)DBNull.Value);

现在谁能更详细地解释下一个示例?显然,它正在检查字符串以查看它是否为空,但是 ? 运算符之后的所有内容如何工作?另外??? 在性能方面有什么区别?

cmd.Parameters.Add(new SqlParameter("ID", ID.Text == "" ? (object)DBNull.Value : ID.Text));

【问题讨论】:

  • 请注意,如果ID 是一个控件,ID.Text ?? 通常什么都不做(因为大多数控件将返回"" 而不是null)。
  • 另外,我建议阅读string.IsNullOrEmpty
  • 我投票结束这个问题,因为它是一个“帮我阅读手册”的问题
  • @mjwills ID 是一个文本框,它经常返回 "" 并插入我的数据库而不是 null。也可以,我可以使用string.IsNullOrEmpty。只是没想到,专注于右侧的操作。

标签: c# sql-server object operators


【解决方案1】:

它们是两个不同的函数,一个用于空值合并,另一个用作三元函数的条件运算符。 Microsoft Developer Network 将两者解释为follows

Null-coalescing 运算符 此运算符的优先级高于 下一节的优先级低于上一节。

x ?? y – 如果 x 不为 null,则返回 x;否则,返回 y。


条件运算符 此运算符的优先级高于下一个运算符 节,并且优先级低于上一节。

t ? x : y – 如果测试 t 评估为真,则评估并返回 x; 否则,计算并返回 y。

【讨论】:

猜你喜欢
  • 2020-01-11
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 2019-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-15
相关资源
最近更新 更多