2015-09-28 2 views
-1

Я создал набор пользовательских классов, чтобы содержать некоторую информацию, которая мне нужна, в определенном порядке. Каждый класс, помимо последнего класса, содержит массив под ним.Исключительное исключение ссылки в булевом, внутри пользовательских вложенных массивов классов

Таможенные классы заключаются в следующем.

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.

+1

Я согласен с закрытием. OP - вы выделили * хранилище * для своего массива, но на самом деле не выделили его. 'PricingOptionGroup [0]' равно null. –

+0

Не инициализирует ли это? Quote testQuote = new Quote(); –

+0

Да, но не 'PricingGroup'. –

ответ

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() 
    }; 
} 
+0

Должен ли я сделать это тогда? Quote testQuote = new Quote(); testQuote.PricingOptionGroup = new PricingGroup [10]; –

+0

Обновлен одним из способов инициализации массива. –

+0

Мне это нравится. Огромное спасибо. –

Смежные вопросы