NullReferenceException С# При попытке заполнения

186
07 февраля 2018, 10:16

Возникла необычная проблема.
Имеется класс:

public class QuestionList //Класс хранения вопросов  
{
public string question; //Вопросы
public string[] answers = new string[4]; //Ответы 4
}

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

public void OnClickPlay() //При нажатии кнопки запуска
...       
{   
for(int k=0; k<1; k++){
questions[k].question = guestI[k];
}
int c =0;
for(int i=0; i<guestI.Length; i++){
 for(int a=0; a<=3; a++){
    questions[i].answers[a] = ansI[c];
    c++;
}}}

Так вот, проблема в том, что если мы создаем его в общих переменных:

public QuestionList[] questions;

И затем задаем размер в void Start:

void Start () {
    questions  = new QuestionList [2];
}

то все работает. Однако, если задаем размер в самом OnClickPlay, то выдает ошибку NullReferenceException.

Посоветуйте решение данной проблемы.

P.S. Задавать размер в void Start не выйдет, ибо количество вопросов будет зависеть от данных, которые передаются при нажатии кнопки (разные по размеру)

Answer 1

Да. Спасибо, использование List действительно решило проблему. (Чего я с самого начала его не юзал >_<).

  public void OnClickPlay(){  
  List<QuestionList> questions = new List<QuestionList>();
  ...
  for(int k=0; k<guestI.Length; k++){
    questions.Add(new QuestionList() {question=" "});
    questions[k].question = guestI[k];
    }
  ...
  }
READ ALSO
C# Издатель-Подписчик через RabbitMQ

C# Издатель-Подписчик через RabbitMQ

Решил разобраться с меж сервисным взаимодействием через брокер сервис очереди RabbitMQИ подвернулась задача где его можно использовать для...

240
Свойства класса в C# [требует правки]

Свойства класса в C# [требует правки]

Мне потребовалось создать свой список, на подобии List<T> в C#Не спрашивайте зачем, просто примите как дaное

243
Быстрый доступ к закрытому массиву

Быстрый доступ к закрытому массиву

Есть некоторый класс, содержащий массив с координатами в виде закрытого поля, и абстрактный класс для создания расширений:

215
Как можно время на сервере сделать локальным?

Как можно время на сервере сделать локальным?

Раньше у меня хостинг бы в Москве, в моей временной зоне, и сайт работал как ожидалосьСейчас переезжаем на новый хостинг (SmarterAsp, Shared) у которого...

206