在数组中存储循环值

时间:2014-04-23 05:44:59

标签: c# arrays for-loop

我想编写一个函数,该函数返回一个包含for循环的数组,该循环枚举了我想将它们存储到数组中的某些值。我试过这个

public int[] a()
{
   int[] b=new int []{};

   for(int i=0;i<10;i++) 
   {
       b[i]=i   {Index out of range exception comes}
   } 

   return b;
} 

由于性能问题,我不想使用enumerable.range()。 我想保持数组大小为空。

2 个答案:

答案 0 :(得分:2)

在您的情况下,您需要一个包含10个元素的数组。在某些语言中,你可以做你想做的事(JavaScript就是其中之一)。假设您可以在C#中扩展一个数组,那么您的代码将在循环的每次迭代中一次为一个元素分配空间,从而分配10个元素。最理想的是,这将与一次分配10个元素一样快。 然而,这可能不太可能,并且它永远不会比请求一次分配所有这些更快。换句话说,不是一次性分配所有10个元素就没有找到性能增益

public int[] a()
{
   int[] b=new int [10];

   for(int i=0;i<b.Length;i++) 
   {
       b[i]=i;
   } 
   return b;
}

然而,更可读的方法是

public int[] a()
{
    return Enumerable.Range(0,10).ToArray();
}

答案 1 :(得分:0)

int[] b=new int []{};表示您的数组b[]长度为零。您在b[i]=i上获得了范围超出范围的索引,因为没有元素。你有效地做b[0]=0但是元素0不存在。