推广构造函数以在C#中对数组进行操作

che*_*erd 3 c# arrays

我想知道如何在数组的每个元素上应用构造函数,然后返回构造对象的数组.具体来说,我正在使用C#TreeNode.我想要的概念如下:

string[] animals = {"dog","cat","mouse"};
TreeNode[] animalNodes = TreeNode[](animals);
Run Code Online (Sandbox Code Playgroud)

哪里TreeNode[](animals)会产生累积效应

animalNodes[0] = TreeNode("dog");
animalNodes[1] = TreeNode("cat");
animalNodes[2] = TreeNode("mouse");
Run Code Online (Sandbox Code Playgroud)

我知道我可以foreach手动加载这样的结构,但如果可能的话,我正在寻找优雅的"一线"方式.我看起来很长很难,但是找不到任何东西.

Sve*_*ven 7

一些LINQ可以解决这个问题:

TreeNode[] animalNodes = animals.Select(a => new TreeNode(a)).ToArray();
Run Code Online (Sandbox Code Playgroud)

Select扩展方法执行列表的每个部件上的指定的委托(通过这里的λ指定),并创建结果的列表(IEnumerable<TreeNode>在这种情况下).所述ToArray然后扩展方法被用来创建从结果的数组.

或者,您可以使用LINQ的查询语法:

TreeNode[] animalNodes = (from a in animals select new TreeNode(a)).ToArray();
Run Code Online (Sandbox Code Playgroud)

对于这两个示例,编译器生成的代码都是相同的.