我已经创建了一组自定义类,以按特定顺序包含我需要的一些信息。除了最后一个类之外,每个类都包含一个类的数组。
自定义类如下。
public class Quote
{
public int ServiceQuoteId;
public bool Begin = new bool();
public PricingGroup[] PricingOptionGroup = new PricingGroup[10];
}
public class PricingGroup
{
public int ItemId;
public string ALocation;
public bool LocSet = new bool();
public Product[] Group = new Product[10];
}
public class Product
{
public int Total1;
public ProductGroup[] Set = new ProductGroup[10];
public string Term;
}
public class ProductGroup
{
public string Product;
public int Charge;
public bool Option = new bool();
}
创建对象的实例后,如下(下图)
Quote testQuote = new Quote();
我尝试测试其中一个布尔值(如下所示。
if (!testQuote.PricingOptionGroup[0].LocSet)
但这给了我这个错误。
"An exception of type 'System.NullReferenceException' occurred in WebApplication3.dll but was not handled in user code
Additional information: Object reference not set to an instance of an object."
我想做的事可能是不可能的;但从逻辑上讲,我认为这是有道理的。根据我的理解,新的bool()初始化为false。
答案 0 :(得分:0)
您已经为10个ProductOptionGroups分配了空间,但实际上并没有在其中放置任何空间。
这是初始化ProductOptionGroups的一种方法:
public class Quote
{
public int ServiceQuoteId;
public bool Begin = new bool();
public PricingGroup[] PricingOptionGroup = new PricingGroup[10];
public Quote(){
PricingOptionGroup=Enumerable.Range(0,10).Select(i=>new PricingGroup()).ToArray();
}
}
这是另一个:
public class Quote
{
public int ServiceQuoteId;
public bool Begin = new bool();
public PricingGroup[] PricingOptionGroup = {
new PricingGroup(),
new PricingGroup(),
new PricingGroup(),
new PricingGroup(),
new PricingGroup(),
new PricingGroup(),
new PricingGroup(),
new PricingGroup(),
new PricingGroup(),
new PricingGroup()
};
}