列出添加问题
本文关键字:添加 问题 列出 | 更新日期: 2023-09-27 18:32:09
基本上我有两个类,例如A类和B类
类 A 包含一个列表,列表 A
B类包含一个列表,列表B
。每当我打开一个文件时,我都会使用 B 类,它会填充列表 B。现在要编辑此文件,我必须填充列表 A,我通常在类 A 中创建一个 B 类的对象。
即
B file = new B; //creates an object of B
A = file; // assign B to A so all contents of B will populate A
我遇到的问题是,每当我将项目添加到列表 A 时,它都会自动更新 B 类中的列表 B。我像这样设置了列表 B:
List<typeofList> B {get; private set;}
//a default constructor
public B()
{
B = new List<typeofList>();
}
// a constructor used to set updated list
public B(List<typeofList> thisCurrentList)
{
B = thisCurrentList;
}
public addItemsToListB()
{
//codes for adding
//popoulates List B
}
我试图实现的是,仅当我调用在类 A 中添加的方法时,才在列表 A 中添加一个项目并在 B 类中更新列表 B。
但每当我这样做时:
A.Add(item); // this adds item to List A BUT also adds an item automatically in List B(in Class B).
知道为什么会这样吗?我调试了代码,但我不知道上面一行发生了什么。
你说:
B文件 = 新 B;//创建 B 的对象
A= 文件;//将 B 分配给 A,以便 B 的所有内容都将填充 A
这是不正确的。 你显然期待file
的副本,但你真的得到了它的引用。
这意味着对A
的改变必然意味着对B
的改变。
如果你想要一个副本,你需要一个构造函数,它:
A = new B(file);
。并且该构造函数应创建一个包含file
包含的任何内容的新B
。 这样,对一个的更改不会影响另一个。 然后,可以在所选对象上调用方法。
只需对列表执行 = 运算符即可使它们相互关联,因此它们的内部数据是共享的。
如果要复制,请尝试以下操作:
A = new List<typeOfList>(B)