我有一个起点范围和结束范围,我需要能够生成数字withing此范围内,并开始范围+ 1每次增加返回的数字,但从来没有产生相同数量的两倍。如何在起始和结束范围内生成数字?
不知道如何用C#做到这一点,任何帮助将是巨大的。
我有一个起点范围和结束范围,我需要能够生成数字withing此范围内,并开始范围+ 1每次增加返回的数字,但从来没有产生相同数量的两倍。如何在起始和结束范围内生成数字?
不知道如何用C#做到这一点,任何帮助将是巨大的。
你不只是寻找一个枚举发生器功能?
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);
输出是:
如果那不是有意的话约翰Weldons建议应该正常工作。
尝试Enumerable.Range(start, count)
。它内置于框架中。
我不知道你的意思是“增加由起始范围+ 1返回的数字”?这是否意味着如果范围从5到10,你会添加(5 + 1)到你生成的任何数字? – rossipedia
这里的情况是什么?当然你已经知道如何定义一个整数和++它。你没有解释在你的特定情况下,这个不重要的东西...... –
这个问题根本不清楚。不明白你需要什么。 –