构建增加大小的int []

时间:2014-05-15 12:34:14

标签: c# arrays linq

从0开始构建整数数组并增加到给定点的最简单方法是什么?

背景: 我有一个struct,其中包含表示其他数组索引的int[]

我想表示我希望通过填充此数组来使用所有索引,int从0开始并逐渐增加到int numTotalIndexes;我确信有更好的方法来执行此操作而不是使用for循环。

有人在这里向我展示了这个小小的Linq技巧

int[] numContacts = new int[]{ 32, 48, 24, 12};
String[][] descriptions = numContacts.Select(c => new string[c]).ToArray();

构建一个没有循环的锯齿状2D数组(确实如此,但它隐藏了它们并使我的代码变得漂亮)并且我认为可能有一个很好的小技巧来完成我想要的上面。

2 个答案:

答案 0 :(得分:5)

您可以使用Enumerable.Range

int[] intArray = Enumerable.Range(0, numTotalIndexes).ToArray();

您:

  

我确信有比使用for循环

更好的方法

请注意,LINQ也使用循环,你根本看不到它们。它也不是最有效的方式,因为ToArray不知道数组必须有多大。但是,它是一种可读性和简短的方式。

所以这是初始化数组的(可能是过早的)优化的经典方法:

int[] intArray = new int[numTotalIndexes];
for(int i=0; i < numTotalIndexes; i++)
    intArray[i] = i;

答案 1 :(得分:0)

我不确定我完全理解你的问题,但如果按照你的第一行说出你想要的是

var MySequencialArray = Enumerable.From(0,howmanyyouwant).ToArray();