我想知道如何在数组的每个元素上应用构造函数,然后返回构造对象的数组.具体来说,我正在使用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手动加载这样的结构,但如果可能的话,我正在寻找优雅的"一线"方式.我看起来很长很难,但是找不到任何东西.
一些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)
对于这两个示例,编译器生成的代码都是相同的.