C# правильные значения отображаются только во время отладки
У меня есть приложение на C# (.NET), которое реализует генетический алгоритм.
Он имеет класс Population с массивом Individuals (другой класс), который также имеет массив объектов Genes. Проблема заключается в том, что при печати содержимого массива Population он не отображает правильные значения, если я не отлаживаю конструктор класса Individual. Без отладки массив Population заполняется тем же первым отдельным объектом для всего его размера. Я ничего не делал, кроме размещения точек останова, и он отображает правильные значения.
Конструктор населения:
public Population(int populationSize, bool initial,int noOfReq)
{
population = new Individual[populationSize];
if (initial)
{
for (int i = 0; i < populationSize; i++)
{
Individual ind = new Individual(noOfReq,true);
population[i] = ind;
}
}
}
Индивидуальный конструктор
public Individual(int noOfReq, bool initial)
{
req = new Gene[noOfReq];
if (initial)
{
Random rand = new Random();
//Randomly assign the Req to a value between 0 and 2
for (int gene = 0; gene < noOfReq; gene++)
{
Gene newGene = new Gene();
req[gene] = newGene;
req[gene].name = "R" + gene;
req[gene].cost = rand.Next(1, 10);
int r = rand.Next(3);
req[gene].value= r;
}//if initial
}
Как решить эту проблему?
Замечания:
- Запуск приложения без точек останова -> содержимое массива Population неверно.
- Установка точек останова в конструкторе Individual, затем запуск приложения -> отображение правильных значений.
- я использую
Random rand = new Random(); int r = rand.Next(3);
заполнить объект Gene у каждого элемента в массиве Individual.