如何在起始和结束范围内生成数字

本文关键字:范围内 数字 结束 | 更新日期: 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

如果这不是意图,那么约翰·韦尔登的建议应该很好。