我有一个 Oracle 数据表获取空列。所以我想保持代码简洁明了,我会使用 ??操作数。 AlternatePhoneNumber 是我的 C# 模型中的一个字符串。

AlternatePhoneNumber = customer.AlternatePhoneNumber ?? ""

但是,即使使用该代码,我仍然会收到错误消息。
System.InvalidCastException: Unable to cast object of type 'System.DBNull' to type 'System.String'.

我知道错误意味着什么,但为什么?不能在 DBNull 上使用? null 和 DBNull 本质上不是一样的吗?

谢谢你。

最佳答案

?? 运算符仅适用于实际的 null s。
nullDBNull.Value 不一样; DBNull.Value 只是一个占位符对象。

此外,该异常来自 AlternatePhoneNumber 属性内部,在您的 ?? 运算符执行之前。 (您的代码没有类型转换)。

如果 customer 是类型化数据集中的一行,请在设计器中更改列的 NullValue 属性。

关于c# - 为什么不能将 '??' 操作数用于 System.DBNull 值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3213125/

10-10 19:38