List <T>().添加问题C#

meh*_*rif 4 c# list

我做了一个List来保存对象,然后我会读它.但即使我给List一个索引,我总是得到相同的对象结果.这是代码:

            List<TempIds> treeDIds = new List<TempIds>();
            TempIds tempIds = new TempIds();


            foreach (ItemGroupTreeD treeD in itemTreeDColl)
            {

                //Idleri listeye al?yoruz daha sonra kar??la?t?rma yapmak için
                tempIds.TreeDId = treeD.Id;
                tempIds.TreeParentId = treeD.TreeParentId;
                treeDIds.Insert(treeDIds.Count, tempIds);
                //----

                //E?er ilk gelen detay id ile methoda gelen id bir ise collectiona ekliyoruz.
                if (tempIds.TreeDId == groupTreeDId)
                {
                    treeDTempColl.Add(treeD);
                }
                else
                {
                    //Burada kar??la?t?rma yap?yoruz.
                    for (int i = 0; i < treeDIds.Count; i++)
                    {
                        if (tempIds.TreeParentId == treeDIds[i].TreeDId)
                        {
                            treeDTempColl.Add(treeD);
                            break;
                        }
                    }
                }

            }
Run Code Online (Sandbox Code Playgroud)

例如:

对于第一个循环TreeDId = 3和TreeParentId = 1然后我插入索引0.第二个循环TreeDId = 2,TreeParentId = 1,然后插入索引1.当循环进入List时,我总是得到TreeDId = 2和TreeParentId = 1 ,因为最后一个循环是第二个循环.我还能做什么?

谢谢.

Pre*_*gha 11

只有一个tempIds对象.列表中的项目是相同的项目,并且其中包含最后一项.移动TempIds tempIds = new TempIds();进入循环

        foreach (ItemGroupTreeD treeD in itemTreeDColl)
        {
          TempIds tempIds = new TempIds();
Run Code Online (Sandbox Code Playgroud)

请记住,列表不包含您添加的数据的副本.它包含对您添加的对象的引用.这样做会创建一个新对象,您可以每次插入.