Мне нужно вставить простое целое число в очередь.

По какой-то причине он всегда сворачивался по ссылке null. Нужно ли инициализировать очередь? Как это сделать?

Это мой код.

Queue<int>[] OdafimColors = new Queue<int>[10];
OdafimColors[i].Enqueue(-1);

Это очень просто, я не могу понять, почему это не работает.

-1
user2922456 1 Ноя 2014 в 23:03

2 ответа

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

for(int i = 0; i<OdafimColors.Lenght; i++)
      OdafimColors[i] = new Queue<int>();

Ваше определение не выделяет место для очередей. Он выделяет память для массива, и элементы равны нулю, пока вы их не инициализируете.

3
Selman Genç 1 Ноя 2014 в 23:04

Я не думаю, что вы хотите, чтобы это был массив. Это делает его массивом очередей.

Вы наверняка захотите:

Queue<int> OdafimColors = new Queue<int>();
OdafimColors.Enqueue(-1);

http://msdn.microsoft.com/en-us/library/7977ey2c(v=vs.110).aspx

0
Derek 1 Ноя 2014 в 23:07
1
Хотя в его вопросе указан массив очередей, я чувствую, что вы делаете это не в его намерениях. Я проголосовал за, но он проголосовал против ...
 – 
Michael Puckett II
19 Дек 2018 в 04:40