を使用して、ツリーのようなクラスの子を取得:私は次のようにクラスクラスタを構築し、再帰
public class Cluster
{
List<Cluster> lstChildClusters=new List<Cluster>();
public List<Cluster> LstChildClusters
{
get { return lstChildClusters; }
set { lstChildClusters = value; }
}
public classA alr;
}
私の目標は、0を持つことができますtype.Basicallyクラスタのオブジェクトのすべての孫の父親を取得する機能を構築することですまたは0人以上の息子を持つことができるより多くの息子。
再帰関数を作成しようとしましたが、戻ってくるのは、下のコードを使用している孫だけです。 ここで私が構築された機能である:
public List<classA> getLevel0Clusters(Cluster cluster,List<classA> list)
{
if (cluster.LstChildClusters.Count == 0)
{
list.Add(cluster.alr);
return (list);
}
else
{
for (int i = 0; i < lstChildClusters.Count - 1; i++)
{
return (lstChildClusters[i].getLevel0Clusters(lstChildClusters[i], list));
}
return (lstChildClusters[0].getLevel0Clusters(lstChildClusters[0], list));
}
}
私はデバッグのためにそれらのインスタンスを使用していますが:
Cluster father = new Cluster();
father.Alr = new Alarm("father");
Cluster son1 = new Cluster();
son1.Alr = new Alarm("son1");
Cluster son2 = new Cluster();
son2.Alr = new Alarm("son2");
Cluster grandson1 = new Cluster();
grandson1.Alr = new Alarm("grandson1");
Cluster grandson2 = new Cluster();
grandson2.Alr = new Alarm("grandson2");
father.LstChildClusters.Add(son1);
father.LstChildClusters.Add(son2);
son1.LstChildClusters.Add(grandson1);
son1.LstChildClusters.Add(grandson2);
List<classA> lst=new lst<ClassA>();
lst=father.getLevel0Clusters(father, father.LstAlarms);
は、誰もがこの問題を解決する方法上の任意の手掛かりを持っていますか? ありがとうございました
は、私はあなたのクラスDEFSとサンプルデータを提供することを最初に感動しましたが、私は行ったときそれらをテストするために、それらはコンパイルされません。あなたのコードをテストしたなら、本当に役に立ちます。 – Enigmativity