Массив UserControl, каждый элемент управления имеет метод для установки там текста метки, но получает исключение NullReferenceException. Помогите! - PullRequest
1 голос
/ 23 октября 2009

Итак, я создаю массив:

TorrentItem[] torrents = new TorrentItem[10];

Элемент управления TorrentItem имеет метод с именем SetTorrentName (имя строки) :

private void SetTorrentName(string Name)
{
    label1.Text = Name;
}

Я использую цикл for для заполнения 10 TorrentItems следующим образом:

private TorrentItem[] GetTorrents()
{
    TorrentItem[] torrents = new TorrentItem[10];
    string test = "";

    for (int i = 0; i < 10; i++)
    {
          test = i.ToString();
          TorrentItem[i].SetTorrentName(test); //I get a null reference error here. 
          //What am I doing wrong?
    }  

Ответы [ 2 ]

7 голосов
/ 23 октября 2009

Вы создаете массив ссылок на 10 объектов, но вы не создаете 10 объектов в массиве. Все элементы массива null, пока не будут инициализированы в противном случае.

for( int i = 0; i < 10; ++i )
{
    torrents[i] = new TorrentItem();
    /* do something with torrents[i] */
}

Однако инициализация имени, вероятно, может быть помещена в конструктор.

2 голосов
/ 23 октября 2009

Вам нужно инициализировать каждый отдельный TorrentItem:

for (int i = 0; i < 10; i++)
{
      TorrentItem[i] = new TorrentItem(); //Initialize each element of the array
      test = i.ToString();
      TorrentItem[i].SetTorrentName(test); //I get a null reference error here. 
      //What am I doing wrong?
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...