列出添加问题

本文关键字:添加 问题 列出 | 更新日期: 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).

知道为什么会这样吗?我调试了代码,但我不知道上面一行发生了什么。

列出<T>添加问题

你说:

B

文件 = 新 B;//创建 B 的对象

A

= 文件;//将 B 分配给 A,以便 B 的所有内容都将填充 A

这是不正确的。 你显然期待file的副本,但你真的得到了它的引用。

这意味着对A的改变必然意味着对B的改变。

如果你想要一个副本,你需要一个构造函数,它:

A = new B(file);

。并且该构造函数应创建一个包含file包含的任何内容的新B。 这样,对一个的更改不会影响另一个。 然后,可以在所选对象上调用方法。

只需对列表执行 = 运算符即可使它们相互关联,因此它们的内部数据是共享的。

如果要复制,请尝试以下操作:

A = new List<typeOfList>(B)