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);
?