对于TreeList的一个给定实例,如何检查要添加到第一个TreeList的TreeList的另一个实例是否包含对第一个TreeList本身的引用(可能是间接引用)(这会创建循环引用)?C#如何检测循环引用?
例如:
TreeList T1 = new TreeList();
TreeList T2 = new TreeList();
TreeList T3 = new TreeList();
T1.add(T2);
T2.add(T3);
T3.add(T1);
因为当我通过这个我会陷入一个循环,iterrate因为T3后,我还是会回到T1。那么如何检查订单中是否已包含一个。
class TreeList
{
public string Name { get; set; }
List<TreeList> items = new List<TreeList>();
public ReadOnlyCollection<TreeList> Items
{
get { return items.AsReadOnly(); }
}
public TreeList(string Name)
{
this.Name = Name;
}
public void Add(string item)
{
items.Add(new TreeList(item));
}
public void Add(TreeList subTree)
{
items.Add(subTree);
}
public override string ToString()
{
return Name;
}
}
但是,让我们说,我有T1,T2,T3和T4。当我加T4到T3和T3到T2和T2到T1。如果T1未包含在行中,我将如何检查实例T4? – Silent3241
您还需要包括如何遍历它们。 – Evk
'if(!subTree.Equals(this))'? – ThePerplexedOne