Пустой указатель при создании объекта по клику - PullRequest
0 голосов
/ 31 октября 2011

При добавлении в header.headerItems.Add (d2) у меня возникает исключение нулевого указателя.в котором мой headerItems является наблюдаемой коллекцией типа Data

Кто-нибудь может сказать мне, почему это?

 private void addData(Header header)
 {
        Data d2 = new Data("pol");
        header.headerItems.Add(d2);
 }

Мой метод, который вызывает этот метод, аналогичен приведенному ниже.В котором заголовок является частью класса Packet.

addData(packet.header);

Мой класс заголовка

public class Header
    {
    private ObservableCollection<Data> headerCollection;
    private String sheadervalue;
    public Header(String headervalue)
    {
        sheadervalue = headervalue;
    }

    public ObservableCollection<Data> headerItems
    { get { return headerCollection; } }

    public string headervalue
    {
        get { return sheadervalue; }
        set { sheadervalue = headervalue; }
    }
}

Мой класс данных

  public class Data
{
    private String sDatavalue;

    public Data(String datavalue)
    {
        this.sDatavalue = datavalue;

    }

    public string datavalue
    {
        get { return sDatavalue; }
        set { sDatavalue = datavalue; }
    }

}

Ответы [ 2 ]

3 голосов
/ 31 октября 2011

проблема в том, что вы обращаетесь к полю нулевого объекта (заголовок). делай как ниже

private void addData(Header header)
 {
    if(null == header)
    {
       // if header null what you can do... e.g log header is null 
       return; 
    }
    if(null == header.headerItems)
    {
        header.headerItems = ....; // create new header item collection 
    }

    Data d2 = new Data("pol");
    header.headerItems.Add(d2);
 }
2 голосов
/ 31 октября 2011

Возможно, заголовок параметра равен нулю. Поскольку код прямо сейчас, у нас нет идеи, почему заголовок параметра равен нулю.

Проверьте с отладчиком, является ли package.header нулевым, и если да, проверьте почему.

Возможная причина, вы забыли инициализировать ее в конструкторе. Другая возможная причина, вы забыли установить значение заголовка где-нибудь.

Другая возможная причина, проблема в header.headerItems. Если header не нуль, headerItems может быть ноль. Проверьте это, проверьте, правильно ли он был инициализирован в конструкторе заголовка или где он должен быть инициализирован.

Почему вы не используете отладчик? С помощью отладчика вы можете видеть состояние каждой переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...