我有一个起始范围和结束范围,我需要能够生成具有此范围的数字,并且每次都按照起始范围+ 1递增返回的数字,但绝不会两次生成相同的数字。
不确定如何使用C#,任何帮助都会很棒。
答案 0 :(得分:3)
试试Enumerable.Range(start, count)
。它内置于框架中。
答案 1 :(得分:0)
您不只是在寻找可枚举的生成器函数吗?
public IEnumerable<int> Generate(int begin, int end) {
int cur = begin;
while(cur <= end) {
yield return cur;
cur++;
}
}
用法:
foreach(int val in Generate(3, 15))
{
DoWork(val);
}
答案 2 :(得分:0)
由于你的文章并不完全清楚,我会猜测你想要一个函数,当被调用时给你下一个索引(就像一个自动增量器,跟踪你的下一个值,而不是list) - 最简单的方法是使用一个闭包,我想:
var closedIndex = new Func<int, int, Func<int>>((lower, upper) => {
return delegate {
if (lower < upper) {
lower++;
return lower;
}
return lower;
};
});
用法:
var nextIndex = closedIndex(1, 5);
var first = nextIndex();
var second = nextIndex();
var third = nextIndex();
Console.WriteLine(first);
Console.WriteLine(second);
Console.WriteLine(third);
输出是:
2
3
4
如果那不是意图,那么John Weldons的建议应该可以正常工作。