如何在起点和终点范围内生成数字?

时间:2011-11-03 01:32:46

标签: c# asp.net

我有一个起始范围和结束范围,我需要能够生成具有此范围的数字,并且每次都按照起始范围+ 1递增返回的数字,但绝不会两次生成相同的数字。

不确定如何使用C#,任何帮助都会很棒。

3 个答案:

答案 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的建议应该可以正常工作。