更容易系统地创建新节点?

时间:2016-01-12 12:38:01

标签: c# tree ienumerable

因此,出于测试目的,我需要有三个类型<T>的IEnumebles。一个有两个分支,一个有一个分支,一个只包含节点。我必须在更大的树结构中创建进一步的测试,这将需要更多不同IEnumebles的迭代。目前,我的(工作)解决方案看起来像这样。但我不禁想到,我可以一次添加一个分支,并在每个步骤设置IEnumerables彼此相等,或者那种性质的东西来加速这个过程。显然,直接实现这个不会起作用,因为它们是引用类型,所以它们最终会得到相同的值,无论如何它都会相当混乱,如果我解决它...让我有点卡住。有没有办法以不那么繁琐的方式实现这一目标?

// Create test IEnumerables for comparison (one full, one with one branch, one of just node)
List<T> testlistfull, testlist1branch, testlistnode;
testlistnode = new List<T>();
testlistnode.Add(node0);

testlist1branch = new List<T>();
testlist1branch.Add(node0);
testlist1branch.Add(branch1);

testlistfull = new List<T>();
testlistfull.Add(node0);
testlistfull.Add(branch1);
testlistfull.Add(branch2);

IEnumerable<T> testenumfull = testlistfull as IEnumerable<T>;
IEnumerable<T> testenum1branch = testlist1branch as IEnumerable<T>;
IEnumerable<T> testenumnode = testlistnode as IEnumerable<T>;

1 个答案:

答案 0 :(得分:1)

您可以使用隐式类型数组。他们从数组初始值设定项中的值推断出它们的类型。

IEnumerable<T> testenumfull = new [] {node0, branch1, branch2};
IEnumerable<T> testenum1branch = new [] {node0, branch1};
IEnumerable<T> testenumnode = new [] {node0};

或者由于某种原因它们必须是List<T>类型。

IEnumerable<T> testenumfull = new List<T>{node0, branch1, branch2};
IEnumerable<T> testenum1branch = new List<T>{node0, branch1};
IEnumerable<T> testenumnode = new List<T>{node0};

您不需要as IEnumerable<T>,因为只需分配给该类型的变量即可进行隐式转换。