如何在起始和结束范围内生成数字
本文关键字:范围内 数字 结束 | 更新日期: 2023-09-27 18:13:05
我有一个起始范围和结束范围,我需要能够在这个范围内生成数字,并且每次将返回的数字增加起始范围+ 1,但永远不会生成相同的数字两次
不知道如何在c#中做到这一点,任何帮助将是伟大的
尝试Enumerable.Range(start, count)
。它是框架内置的
您不只是在寻找一个可枚举的生成器函数吗?
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);
}
由于您的帖子不完全清楚,我将冒昧地猜测您想要一个函数,当调用时为您提供下一个索引(像自动递增器,为您跟踪下一个值,而不是列表)—最简单的方法是使用闭包,我认为:
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如果这不是意图,那么约翰·韦尔登的建议应该很好。