в этом цикле parent == Children[i]
и Children
является геттером для children
Вы действительно хотите добавить один и тот же узел к children
и parent
, что сделало бы то же самое?узел брат parent
в дополнение к ребенку?Я не совсем понимаю, что вы действительно пытаетесь сделать, но это кажется неправильным:
if ((parent.Children == null) || (parent.Children[1] == null))
{
children.Add(node);
parent.Add(node);
..
}
edit
Из кода поддержки, который вы опубликовали, проблема можетбыть связанным с тем, как вы создаете объекты:
/* outside the loop */
Gene funcGene = new Gene();
Gene termGene = new Gene();
...
/* inside the loop*/
funcGene.GenerateValue(GeneType.Function);
GeneNode<Gene> geneNode = new GeneNode<Gene>(funcGene);
sChromosome += " " + geneNode.Value;
chromosone.addFull(geneNode);
Похоже, вы создаете новый GeneNode
несколько раз, используя один из двух экземпляров Gene
в своем конструкторе.Предполагая, что ваш GeneNode
сохраняет его как значение свойства, каждый GeneNode
будет ссылаться на один и тот же экземпляр Gene
(ну, один из двух, funcGene
или termGene
).Я предполагаю, что это то, что вы имеете в виду, когда говорите новый элемент того же типа, что и предыдущие элементы в ArrayList, этот новый элемент перезаписывает отдельные свойства предыдущих элементов. Любые изменения свойства Gene
, назначенного изконструктор в любом узле того же типа будет ссылаться на тот же Gene
.Даже если вы создаете новые GeneNodes
, они построены из одного и того же Gene
.
. При условии, что GeneNode.Value
ссылается на Gene
, с которым он был создан, могут быть возвращены только два различных значения(соответствует текущему значению одного из двух Gene
экземпляров) любым узлом в любой данный момент времени.
Возможно, вы хотите переместить код, чтобы создать новый Gene
внутри вашегоцикл. * * 1 043