在自定义类嵌套数组中,布尔值上的空引用异常

本文关键字:引用 异常 布尔值 自定义 嵌套 数组 | 更新日期: 2023-09-27 18:14:51

我已经创建了一组自定义类,以特定的顺序包含我需要的一些信息。除了最后一个类之外,每个类都包含其下面的类数组。

自定义类如下。

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."

我想做的可能是不可能的;但从逻辑上讲,我相信这是有道理的。根据我的理解,new bool()初始化为false。

在自定义类嵌套数组中,布尔值上的空引用异常

您已经为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()
    };
}