为什么我不能用'??' System.DBNull值的操作数?

Mik*_*ike 3 c# oracle dbnull

我有一个Oracle数据表获取为null的列.所以我想保持代码很好,很简单,我会使用?? 操作数.AlternatePhoneNumber是我的C#模型中的字符串.

AlternatePhoneNumber = customer.AlternatePhoneNumber ?? ""
Run Code Online (Sandbox Code Playgroud)

但是,即使使用该代码,我仍然会收到错误.

System.InvalidCastException: Unable to cast object of type 'System.DBNull' to type 'System.String'.
Run Code Online (Sandbox Code Playgroud)

我知道错误意味着什么,但为什么?在DBNull上不可用?是不是null和DBNull基本相同?

谢谢.

SLa*_*aks 15

??操作仅适用于实际null秒.

null并且DBNull.Value不一样; DBNull.Value只是一个占位符对象.

此外,AlternatePhoneNumber??运算符执行之前,该异常来自属性内部.(您的代码没有演员表).

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