当前位置: 首页 > 编程语言 > C#

在树结构上实现IEnumerable分享

时间:2023-04-10 16:19:39 C#

C#学习教程:在树结构上实现IEnumerable>r.ID)%>树结构定义如下:publicclassTree:TreeNodewhereT:TreeNode{}publicclassTreeNode:IDisposablewhereT:TreeNode{publicTParent{get;放;}publicTreeNodeListChildren{get;放;}}publicclassTreeNodeList:List其中T:TreeNode{publicTParent;publicTAdd(Tnode){base.Add(node);node.Parent=(T)Parent;返回节点;}publicvoidRemove(Tnode){if(node!=null)node.Parent=null;base.Remove(节点);}}TreeView助手有这个签名:publicstaticstringTreeView(thisHtmlHelperhtmlHelper,stringtreeId,IEnumerablerootItems,FuncchildrenProperty,FuncitemContent,boolincludeJavascript,stringemptyContent){...}因此,我需要我的实现IEnumerable的树结构,因此我可以将它与TreeView助手一起使用,这会导致一个问题:在这种情况下,我将在哪里以及如何实现IEnumerable?对于任何想要实现递归树迭代器的人来说,WesDyer的这篇文章是一个很好的读物:http://blogs.msdn.com/wesdyer/archive/2007/03/23/all-about-iterators.aspx我不完全理解树结构的确切细节,但这里有一个简单的实现,它采用通用节点树并递归划分它呈现为html列表publicstaticstringTreeView(IEnumerablerootItems,Func>childrenProperty,FuncitemContent){if(rootItems==null||!rootItems.Any())returnnull;varbuilder=newStringBuilder();builder.AppendLine("");返回builder.ToString();我使用的节点类相对简单,只有两个属性。公共类节点{公共节点(T数据){数据=数据;孩子=新列表>();}公共T数据{得到;私有集;}publicICollection>Children{get;私有集;将树输出到控制台的测试代码。varRecords=new[]{newNode("one"){Children={newNode("one-one"){Children={newNode("one-one-one"),newNode("one-one-二”),新节点(“一一三”)}},新节点(“一二”),新节点(“一三”)}},新节点(“二”),新节点(“三”)};Console.WriteLine(TreeView(Records,r=>r.Children,r=>r.Data));下面是上面代码的结果。以上就是C#学习教程:在树结构上实现IEnumerable共享的所有内容。如果对大家有用,需要详细了解C#学习教程,希望大家多多关注——一二一三二三本文来自网络合集,不代表立场,如涉及侵权请点击维权联系管理员删除。如需转载请注明出处: