数据结构模型如下:
public Class A { public string Name{get;set;} public list<A> children{get;set;} }
现要寻找一个子节点,目前代码如下:
public A FindByName(string _name) { if (this.Name == _name) return this; else { for (int i = 0; i < this.children.Count; i++) return this.children[i].FindByName(_name); } return null; }
但是,VS编译器一直提示 i++是 "Unreachable code detected".
其运行结果也相差很多,这个循环只遍历了第0个孩子,孙子。。。
现正确的做法如下:
public A FindByName(string _name) { if (this.Name == _name) return this; else { A p = null; for (int i = 0; i < this.children.Count; i++) { p = this.children[i].FindByName(_name); if (p != null) break; } return p; } }