【发布时间】:2012-12-20 11:59:31
【问题描述】:
使用下面的代码是否有更精简的方法将数组从 1 初始化为变量指定的数字?
int nums=5;
int[] array= new int[nums];
for(int i=0;i<num;i++)
{
array[i] = i;
}
也许使用 linq 或一些 array.function?
【问题讨论】:
标签: c# .net arrays linq initialization
使用下面的代码是否有更精简的方法将数组从 1 初始化为变量指定的数字?
int nums=5;
int[] array= new int[nums];
for(int i=0;i<num;i++)
{
array[i] = i;
}
也许使用 linq 或一些 array.function?
【问题讨论】:
标签: c# .net arrays linq initialization
int[] array = Enumerable.Range(0, nums).ToArray();
【讨论】:
ToArray 不知道Enumerable.Range 中有多少元素。因此,它需要遍历所有这些并始终增加容量(使用加倍算法)。因此,您可能会以一个消耗几乎两倍所需内存的数组结束。 ——
List 之类的东西预初始化为您的能力:var items = new List<int>(nums);items.AddRange(Enumerable.Range(0, nums));
使用Enumerable.Range() 方法代替。不要忘记添加 System.Linq 命名空间。但这可能会花费一点点高内存。你可以用like;
int[] array = Enumerable.Range(0, nums).ToArray();
生成指定范围内的整数序列。
【讨论】:
ToArray 不知道Enumerable.Range 中有多少元素。因此它需要foreach 所有这些总是增加容量(使用加倍算法)。因此,您可能会以一个消耗几乎两倍所需内存的数组结束。这是我自己关于这个问题的问题:High memory consumption with Enumerable.Range?
int[] array = Enumerable.Range(0, nums).ToArray();
【讨论】:
也许我在这里遗漏了一些东西,但这是我所知道的最好的方法:
int[] data = new int [] { 383, 484, 392, 975, 321 };
来自MSDN
更简单:
int[] data = { 383, 484, 392, 975, 321 };
【讨论】: