我的 `Enumerable.Range(,)` 发生了什么?
What happened on my `Enumerable.Range(,)`?
我的 Enumerable.Range(,)
发生了什么事?
它产生了一个超出范围的数字 5030。
sellableItems
是个小List<T>
,我需要从里面随机挑9件
代码如下:
var targetIndexes = Enumerable.Range(i + 1, sellableItems.Count-1)
.OrderBy(x => random.Next())
.Take(9)
.ToArray();
for (var j = 0; j < targetIndexes.Length; j++)
{
...
}
Enumerable.Range
方法接受两个参数 - 起始值和计数。
当您执行以下操作时:Enumerable.Range(i + 1, sellableItems.Count - 1)
,您将从值 37
(i + 1
) 和计数 4999
(sellableItems.Count - 1
) 开始。
由于调用 Range
时的每次迭代都会将先前的值递增一个(第一次迭代除外,它使用起始值),范围将从 37
到 5035
.
我的 Enumerable.Range(,)
发生了什么事?
它产生了一个超出范围的数字 5030。
sellableItems
是个小List<T>
,我需要从里面随机挑9件
代码如下:
var targetIndexes = Enumerable.Range(i + 1, sellableItems.Count-1)
.OrderBy(x => random.Next())
.Take(9)
.ToArray();
for (var j = 0; j < targetIndexes.Length; j++)
{
...
}
Enumerable.Range
方法接受两个参数 - 起始值和计数。
当您执行以下操作时:Enumerable.Range(i + 1, sellableItems.Count - 1)
,您将从值 37
(i + 1
) 和计数 4999
(sellableItems.Count - 1
) 开始。
由于调用 Range
时的每次迭代都会将先前的值递增一个(第一次迭代除外,它使用起始值),范围将从 37
到 5035
.