我想编写一个函数,该函数返回一个包含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()
。
我想保持数组大小为空。
答案 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不存在。