DNN C#模块dev-可为null的值
本文关键字:null 的值 可为 dev- 模块 DNN | 更新日期: 2023-09-27 18:21:49
我开发了一个dnn模块,并使用公共类classNameInfo:IHydratable(c#)
有人能解释一下为什么这个代码总是从数据库返回0吗:
System.Nullable<int> _ProductID;
_ProductID = (oReader["ProductID"] == System.DBNull.Value ? null : (int?)oReader["ProductID"]);
而此代码返回正确的值
int? y = (oReader["ProductID"] == System.DBNull.Value ? null : (int?)oReader["ProductID"]);
if (y != null)
{
_ProductID = (int)oReader["ProductID"];
}
else
{
_ProductID = 0;
}
如果您尝试将anything
转换为int?
,则只有当所述anything
的类型恰好为int时,它才会工作。其他所有直接转换都将失败。由于数据库类型从来都不是"完全int
",所以这种转换是不起作用的。
要缩短代码,可以使用以下语句:
_ProductID = oReader["ProductID"] == System.DBNull.Value ? new int?() : (int)oReader["ProductID"];