Tag: design guidelines

我什么时候应该单独实现IEnumerator ?

在集合的框架类中,我经常看到IEnumerator分别实现为内部类,并且在GetEnumerator方法中返回它的实例。 现在假设我正在编写自己的集合类,它将内置集合,如List或T[]充当内部持有者,如下所示: public class SpecialCollection : IEnumerable { List list; public SpecialCollection() { } public IEnumerator GetEnumerator() { return list.GetEnumerator(); //or return list.Where(x => some logic).GetEnumerator(); //or directly rely on yield keyword yield return x; //etc } } 我应该编写自己的枚举器类,还是可以返回List类的枚举器? 我是否应该编写自己的枚举类? 我也有一个相关的问题。 如果它不是那么重要或没有太大的区别,为什么BCL中的每个集合类都编写自己的IEnumerator ? 例如, List类有类似的东西 T[] items; public IEnumerator GetEnumerator() { return new List.Enumerator(items); }

在c#中填充树结构的优雅且可维护的方式

我有一棵树。 class TreeNode { public TreeNode(string name, string description) { Name = name; Description = description; } string Name { get; set; } string Description { get; set; } public List Children = new List(); } 我想填充一个大的unit testing用途。 我真的想把东西放干。 为了说明的目的,我的树具有以下结构 家长,降序 孩子1,desc1 孙子1,desc1 孩子2,desc2 您将如何以优雅可维护的方式填充树木? 我觉得这段代码非常重复且容易出错: var parent = new TreeNode(“Parent”, “desc”); var child1 = […]