Массив UserControl, каждый элемент управления имеет метод для установки там текста метки, но получает исключение NullReferenceException. Помогите!
-
06-07-2019 - |
Вопрос
Итак, я создаю массив:
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?
}
Решение
Вы создаете массив ссылок на 10 объектов, но вы не создаете 10 объектов в массиве. Все элементы массива имеют значение null
, пока не будут инициализированы в противном случае.
for( int i = 0; i < 10; ++i )
{
torrents[i] = new TorrentItem();
/* do something with torrents[i] */
}
Однако инициализация имени, вероятно, может быть помещена в конструктор.
Другие советы
Вам нужно инициализировать каждый отдельный 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?
}
Не связан с StackOverflow