sdr 是我的 sqldatareader,我想检查十进制类型的 curPrice 值是否为空。
inrec.curPrice = sdr.IsDBNull(7) ? (decimal?)null : sdr.GetDecimal(7);
这是我收到的错误消息:
不能隐式转换类型“十进制?” 为“十进制”。存在显式转换(您是否缺少演员表?)
我哪里错了,请有人告诉我。
sdr 是我的 sqldatareader,我想检查十进制类型的 curPrice 值是否为空。
inrec.curPrice = sdr.IsDBNull(7) ? (decimal?)null : sdr.GetDecimal(7);
这是我收到的错误消息:
不能隐式转换类型“十进制?” 为“十进制”。存在显式转换(您是否缺少演员表?)
我哪里错了,请有人告诉我。
decimal?表示它是一个可以为空的小数;您必须使用该Value属性来获取实际值(如果存在,则通过 确定HasValue)。
我假设curPrice是一个不可为空的小数,在这种情况下,您还需要找出比null三元运算符的真实方面更好的返回值。
要么转换curPrice为可空,要么使用可空类型的 .Value 属性。
如果curPrice是一个类的属性,那么
public decimal? curPrice
{
get;
set;
}
inrec.curPrice = sdr.GetValueOrDefault(0m)
由于左侧 ( Price) 不允许,null因此您不能将其值设置为可能的值null。因此,使用.GetValueOrDefault(decimal defaultValue)时返回一个默认值null。
如何将decmial?类型转换为decimal?
inrec.curPrice当sdr.GetDecmial(7)为空 时,您必须拥有您喜欢的价值。
inrec.curPrice = sdr.GetDecimal(7) ?? 0M;
我假设如果返回的内容为空,您会想要使用 0。如果不更改0M为其他十进制值。
--- 重播后更新
怎么样inrec.curPrice = sdr.IsDBNull(7) ? 0M : sdr.GetDecimal(7);?