У меня есть программа, в которой у меня есть три класса A, B и C. A содержит член, который является списком B, а B состоит из члена, который является списком C. A содержит метод, который называется RemoveB(), и аналогично B содержит метод, который называется RemoveC ().RemoveB () и RemoveC () удаляют первый элемент BList и CList соответственно.
Вот как это все выглядит:
class A
{
...
List<B> BList;
...
public void RemoveB()
{
this.BList.Removeat(0)
}
}
class B
{
...
List<C> CList;
...
public void RemoveC()
{
this.CList.Removeat(0)
}
}
class Trial
{
...
}
В моей основной функции я сначала заполняюBList и CList в каждом из этих элементов BList.В BList есть N элементов, и каждый из элементов BList содержит M элементов в CList.Затем я делаю следующее.
A aObject = new A(); // Populates BList and CList.
for(int i = 0; i < N; i++)
{
Console.WriteLine("BList: {0} ({1})", i, aObject.BList[0].Count);
for (int j = 0; j < M; j++)
{
Console.WriteLine("CList: {0}", j);
aObject.BList[0].RemoveC();
}
aObject.RemoveB();
}
Когда я это делаю, я получаю следующую проблему.Когда я пытаюсь удалить элементы в CList, принадлежащие элементу BList [0], соответствующие элементы в CList в BList [1], BList [2] ... BList [N-1] также удаляются.Ниже приведен вывод, который я вижу при запуске программы.
BList 0 (M)
CList 0
CList 1
CList 2
.
.
.
CList M-1
BList 1 (0)
BList 2 (0)
BList 3 (0)
.
.
.
BList N-1 (0)
Может кто-нибудь сказать мне, почему это может происходить?Я где-то совершаю фундаментальную ошибку?