我有一个 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。null
和 DBNull.Value
不一样; DBNull.Value
只是一个占位符对象。
此外,该异常来自 AlternatePhoneNumber
属性内部,在您的 ??
运算符执行之前。 (您的代码没有类型转换)。
如果 customer
是类型化数据集中的一行,请在设计器中更改列的 NullValue
属性。
关于c# - 为什么不能将 '??' 操作数用于 System.DBNull 值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3213125/