0

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

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 не выйдет, ибо количество вопросов будет зависеть от данных, которые передаются при нажатии кнопки (разные по размеру)

Sublihim
  • 2,289
  • 1
    Помимо массива существует целая куча коллекций на все случаи жизни. Познакомьтесь хотя бы с List – Андрей NOP Feb 05 '18 at 13:29
  • 1
    А где у вас по OnClick происходит инициализация массива? – yolosora Feb 05 '18 at 13:36
  • 1
    добавлю к предыдущему комментарию немного конкретики: используйте var questions = new list(); потом создайте объект класса QuestionList ql, заполните его и используйте метод questions.Add(ql) – PavelNewSky Feb 05 '18 at 13:36
  • Благодарю, сейчас попробую при помощи List – BaturinGS Feb 05 '18 at 13:42

1 Answers1

0

Да. Спасибо, использование 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];
    }
  ...
  }
  • почему бы сразу не передавать question=guestI[k] в инициализатор раз уж решили его использовать? – yolosora Feb 07 '18 at 12:08