更容易系统地创建新节点

本文关键字:节点 新节点 系统地 创建 更容易 | 更新日期: 2023-09-27 18:29:54

因此,出于测试目的,我需要三个类型为<T>的IEnumerable。一个具有两个分支,一个具有一个分支,并且一个仅由节点组成。我必须在更大的树结构中创建进一步的测试,这将需要不同IEnumerables的更多迭代。目前,我的(工作)解决方案看起来是这样的。但我忍不住想,我可以一次添加一个分支,并在每一步将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>;

更容易系统地创建新节点

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

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>,因为只需为该类型的变量赋值就可以进行隐式强制转换。