-1

基本的に、クラスAとクラスBなど、2つのクラスがあります

クラス 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).

なぜこれが起こっているのですか?コードをデバッグしましたが、上記の行で何が起こっているのかわかりません。

4

2 に答える 2

-1

リストで = 演算子を実行するだけで、リストが互いに関連付けられるため、内部データが共有されます。

コピーしたい場合は、これを試してください:

A = new List<typeOfList>(B)
于 2013-09-19T11:41:08.257 に答える