我在填充我的对象属性时遇到问题,这是一个List。在下面,我将能够更好地向您展示问题。
Grupo grupo = null;
SubGrupo subGrupo = null;
if (Regex.IsMatch(linhaTrim, @"\b(?<!\.)([A-Z]{1,})(?!\.)\b"))
{
grupo = new Grupo(Convert.ToInt32(arraySplit[arraySplit.Length - 1]), grupoTextoTrim);
if (grupoTextoTrim.Equals("DISPONIBILIDADE DE DOCUMENTOS OFICIAIS"))
{
grupo.ler = false;
indice.Add(grupo);
break;
}
else
{
grupo.ler = true;
}
grupo.SubGrupos = new List<SubGrupo>();
indice.Add(grupo);
}
else
{
//aqui será feita a verificação se existe ou não no indice um determinado subgrupo
//subGrupo = new SubGrupo(Convert.ToInt32(arraySplit[arraySplit.Length - 1]), grupoTexto.Trim());
subGrupo = new SubGrupo();
subGrupo = subGrupos.FirstOrDefault(x => x.descricao.Equals(grupoTextoTrim));
subGrupo.pagina = Convert.ToInt32(arraySplit[arraySplit.Length - 1]);
grupo.SubGrupos.Insert(grupo.SubGrupos.Count, subGrupo);
}
问题出在这一行:
subGrupo.pagina = Convert.ToInt32(arraySplit[arraySplit.Length - 1]);
在我的循环中,descricao属性中有一些相同的引用,这些相同引用之间的区别是SubGrupo对象的属性页。
在循环之后,当我检查我的列表时,我应该有这样的东西:
Grupo descricao : x SubGrupo : descricao : y pagina : y End SubGrupo End Grupo Grupo descricao : x SubGrupo : descricao : y pagina : z End SubGrupo End Grupo
但是现在为pagina返回相同的值。
有人可以帮助我吗?
提前致谢!
答案 0 :(得分:0)
如果共享实现的循环逻辑,将会很有帮助。但基于逻辑,你发布的问题似乎有可能在两个地方出现:
如果arraySplit
(整数数组)初始化外部循环而你
没有从数组中删除元素,
arraySplit[arraySplit.Length - 1]
将始终返回相同的值。
E.g。 int[] arraySplit = {1,2,3,4};
arraySplit[arraySplit.Length - 1] = 4
。
如果grupoTextoTrim
初始化外部循环,或者在每次迭代中使用相同的值初始化,则同一对象的副本将添加到列表中:
subGrupo = subGrupos.FirstOrDefault(x => x.descricao.Equals(grupoTextoTrim));