无法将类型“十进制”隐式转换为“十进制”
本文关键字:十进制 转换 类型 | 更新日期: 2023-09-27 18:33:36
sdr是我的sqldatareader,我想检查十进制类型的curPrice值是否为空。
inrec.curPrice = sdr.IsDBNull(7) ? (decimal?)null : sdr.GetDecimal(7);
这是我收到的错误消息:
无法将类型"十进制"隐式转换为"十进制"。一个明确的 转换存在(您是否缺少演员表?
我哪里做错了,请有人告诉我。
decimal?
表示它是一个可为空的小数;您必须使用 Value
属性来获取实际值(如果存在,则通过 HasValue
确定)。
我假设curPrice
是一个不可为空的小数,在这种情况下,您还需要找出一个比从三元运算符的真实方面返回null
更好的值。
要么
将curPrice
转换为可为空,要么使用 .可为空类型的值属性。
如果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;
我假设如果返回的内容为 null,您会想要使用 0。 如果没有,请将0M
更改为其他十进制值。
--- 重播后更新
inrec.curPrice = sdr.IsDBNull(7) ? 0M : sdr.GetDecimal(7);
怎么样?