Я пишу шахматный движок в C#, и я пытаюсь отлаживать движение поколений. Пока я использую точки останова для проверки переменных, но мне нужен лучший способ для отладки. Несмотря на то, что точка останова показывает, что этот список имеет длину 86, цикл работает только 5 раз. Единственное, что я могу придумать, это то, что массивы в списке имеют длину 5, но я не знаю, что бы это вызвало.C# При использовании foreach в списке массивов foreach только итерации 5 раз, хотя список имеет длину 86
foreach (int[] debugBoard in futures)
{
for (int i = 0; i < 5; i++)
{
Debug.Write(debugBoard[i].ToString().PadLeft(3, ' '));
}
Debug.Write("\n");
int[,] debugOutBoard = new int[8, 8];
Array.Copy(chessBoard.Pieces(), debugOutBoard, 64);
if (debugBoard[0] < 0 || debugBoard[1] < 0 || debugBoard[2] < 0 || debugBoard[3] < 0 || debugBoard[0] > 7 || debugBoard[1] > 7 || debugBoard[2] > 7 || debugBoard[3] > 7)
break;
debugOutBoard[debugBoard[2], debugBoard[3]] = debugOutBoard[debugBoard[0], debugBoard[1]];
debugOutBoard[debugBoard[0], debugBoard[1]] = 0;
int rowLength = debugOutBoard.GetLength(0);
int colLength = debugOutBoard.GetLength(1);
for (int i = 0; i < rowLength; i++)
{
for (int j = 0; j < colLength; j++)
{
Debug.Write(debugOutBoard[i, j].ToString().PadLeft(3, ' '));
}
Debug.Write(Environment.NewLine + Environment.NewLine);
}
}
Кроме того, я попытался с помощью ConcurrentBag хранить двигается в (я собирался распараллелить обработку двигаться позже), но как только цикл Еогеаспа коснулся параллельной мешка, все значения памяти мешка изменились к одному значению. Я несколько дней застрял на этом roadblock, и мне действительно нужна помощь.
что если заявление прорывается из вашего цикла Еогеасп ... Я бы написать ответ, но я понятия не имею, что это если на самом деле пытается выполнить – Sayse
Ах, очень хороший улов. Я считаю, что это, вероятно, проблема. То, что я хотел сделать, это перебрать следующий элемент. Какую команду я буду использовать для этого? – furrysalamander
Я добавил ответ (используйте 'continue') – Sayse