0
实例化类我有一个名为PurchaseOrderItem读取XML,并在同一时间
public class PurchaseOrderItem
{
public Int64 PONumber { get; set; }
public string Description { get; set; }
public string UM { get; set; }
public int QTY { get; set; }
public double Cost { get; set; }
}
我试图从XML迭代部分来读取XML文件中的数据和数据填充到PurchaseOrderItems这是List类。但是,当我尝试下面的代码时,我得到一个错误消息“对象引用未设置为对象的实例。” 我很确定我错过了一些东西,因为我的可怜的OOP知识。有人向我解释是什么原因导致了这个问题?
PurchaseOrderItems =
(from purchaseOrderItem in PO.Descendants("PurchaseOrder").Elements("ProductLineItem")
select new PurchaseOrderItem
{
PONumber = PONumber,
Description = purchaseOrderItem.Element("PurchaseOrder").Element("ProductLineItem").Element("comments").Value.Trim(),
QTY = Convert.ToInt16(purchaseOrderItem.Element("PurchaseOrder").Element("ProductLineItem").Element("OrderQuantity").Element("requestedQuantity").Element("ProductQuantity").Value.Trim()),
UM = purchaseOrderItem.Element("PurchaseOrder").Element("ProductLineItem").Element("GlobalProductUnitOfMeasureCode").Value.Trim(),
Cost = Convert.ToDouble(purchaseOrderItem.Element("PurchaseOrder").Element("ProductLineItem").Element("requestedUnitPrice").Element("FinancialAmount").Element("MonetaryAmount").Value.Trim()),
}).ToList<PurchaseOrderItem>();
请问为什么我应该使用小数点而不是双倍货币值? –
@ SiHyungLee:你喜欢丢失数据吗? ;)十进制是为精确表示十进制值的值设计的 - 通常是金融值。 Double使用* binary *表示,所以像“0.1”这样的东西不能完全表示。有关更多详细信息,请参见http://csharpindepth.com/Articles/General/FloatingPoint.aspx和http://csharpindepth.com/Articles/General/Decimal.aspx。 –
我虽然双也可以处理小数点,并有比小数更大的容量。我的错。谢谢。 –