2013-04-22 4 views
1

У меня есть класс, который создает список другого класса. , который выглядит следующим образом:Доступ к списку классов из другого класса - исключение нулевой ссылки

class SortItAll 
{          
    Recipient rec; 
    public List<Recipient> listofRec = new List<Recipient>(); 

    public void sortToClass() 
    { 
     while (isThereNextLine()) { //while there is a following line 
      loadNextLine();   //load it 

      rec = new Recipient(loadNextPiece(), //break that line to pieces and send them as arguments to create an instance of "Recipient" class 
           loadNextPiece(), 
           loadNextPiece(), 
           loadNextPiece()); 
      listofRec.Add(rec);     //add the created instance to my list 
     } 
    } 

Из моего класса Form1 я называю этот метод (sortToClass()), который по моей логике, должен заполнить свой список с этим конкретным классом. Тогда я хочу написать list.count() в текстовое поле:

public Form1() 
    { 
     SortItAll sort = new SortItAll(); //create the instance of the class 

     sort.sortToClass();    //within which i call the method to fill my list 

     txt_out.Text = sort.listofRec.Count().ToString(); //writing out its count to a textbox 

     InitializeComponent(); 
    } 

И теперь моя проблема, когда я пытаюсь отлаживать, он останавливает меня с

Nullreference exception pointing to -> "txt_out.Text = sort.listofRec.Count().ToString();" in Form1. 

Тем не менее, во время отладки I может проверить местные жители, где он заявляет:

sort -> listOfRec -> Count = 4. 

В чем может быть проблема?

+0

Это txt_out, что является нулевым? –

+1

Попробуйте запустить код _after_ вызов 'InitializeComponent'; это должно убедиться, что все элементы управления (например, 'txt_out') инициализированы, я думаю. –

+0

Добро пожаловать в переполнение стека! Почти все случаи «NullReferenceException» одинаковы. См. «[Что такое исключение NullReferenceException в .NET?] (Http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net)» для некоторых советов. –

ответ

3

Помещенный

txt_out.Text = sort.listofRec.Count().ToString(); //writing out its count to a textbox 

после InitializeComponent(), так как он создан в этом методе.

+0

Я просто понял, что я должен вызвать метод после InitializeComponent. думал об этом как 2 часа:/Я задерживаю. спасибо вам всем! :) –

0

Вы должны сохранить InitializeComponent(); в верхней части метода, поскольку он создает все элементы управления на форме. Вероятно, вы получаете его, потому что пытаетесь получить доступ к элементу управления txt_out, прежде чем он будет создан и добавлен в форму.

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