我正在关注一个示例,它有一个像这样的类:
public class Price
{
private decimal _sellingPrice;
private decimal _rrp;
public Price(decimal RRP, decimal SellingPrice)
{
_rrp = RRP;
_sellingPrice = SellingPrice;
}
}
然后使用 LINQ 从表中查询的值构造此类:
var products = from p in new ShopDataContext().Products
select new Model.Product
{
Id = p.ProductId,
Name = p.ProductName,
Price = new Price(p.RRP, p.SellingPrice)
};
在示例中,这似乎可行,但是我收到此错误:
Price = new Price(p.RRP, p.SellingPrice)
The best overload method match has some invalid arguments
Argument 1: cannot convert from 'decimal?' to 'decimal'
p.RRP 和 p.SellingPrice 值作为 System.Decimal 类型从表中获取,并且默认情况下显然可以为空,因此出现异常,尽管在示例中这似乎运行正常,所以为什么会这样?有什么我想念的吗?我正在尝试使用 C#,并且默认情况下我知道它是一种严格的语言,因此没有选项可以关闭并使其在我的理解中起作用。
感谢您的见解。