当前位置:  开发笔记 > 编程语言 > 正文

List.Add似乎是重复条目.怎么了?

如何解决《List.Add似乎是重复条目.怎么了?》经验,为你挑选了1个好方法。

我有一个这样的课:

public class myClass
{
  public List anewlist = new List;

  public void addToList(myOtherClass tmp)
  {
    anewList.Add(tmp);
  }

}

所以我将"addToList"称为100次,每次都向列表中添加一个唯一的项目.我测试了我的项目以显示在运行"addToList"方法之前,它们是唯一的.我甚至插了一行来测试"tmp",以确保它是我所期待的.

但是,当我这样做时(假设myClass对象被称为tmpClass):

int i = tmpClass.anewList.Count();
for (int j = 0; j

我得到了同样的确切项目,这是写入我列表的最后一项.就像我添加时一样,我用我添加的最后一项覆盖了整个列表.

救命?这毫无意义.我也尝试过List.Insert,我总是在最后插入或在索引0处插入.仍然没有骰子.是的,我是双重源我的索引是正确的,当我做我的测试时,我正在索引每个元素.

:)

更新:好的,我试过这个但仍然有同样的问题:

foreach(myOtherClass tmpC in tmpClass.anewList)
{    
    Console.WriteLine(tmpC.theStringInMyClass.ToString());
}

并且对于100个项目中的每一个,我得到了相同的字符串输出...我确定我做的事情完全是愚蠢的,但我不知道还有什么.我仍然100%确定正确的字符串开始传入.

-Adeena


好的,我试过这个但仍然有同样的问题:

foreach(myOtherClass tmpC in tmpClass.anewList)
{
    Console.WriteLine(tmpC.theStringInMyClass.ToString());
}

并且对于100个项目中的每一个,我得到了相同的字符串输出...我确定我做的事情完全是愚蠢的,但我不知道还有什么.我仍然100%确定正确的字符串开始传入.

-Adeena



1> vt100..:

给定addToList方法的签名:

public void addToList(myOtherClass tmp)
  {
    anewList.Add(tmp);
  }

是否有可能在该方法的使用者中,您实际上并未创建新实例?

你说你正在调用addToList 100次.据推测,这是一个循环.在每次循环迭代中,您将需要创建一个"myOtherClass"的新实例,否则,您将只更新内存中的同一对象.

例如,如果您执行以下操作,则将拥有同一对象的100个副本:

myOtherClass item = new myOtherClass();

for(int i=0; i < 100; i++)
{
  item.Property = i;
  addToList(item);
}

但是,如果您的循环如下所示,它将正常工作:

myOtherClass item = null;
for(int i=0; i < 100; i++)
{
  item = new myOtherClass();
  item.Property = i;
  addToList(item);
}

希望有所帮助!

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有