2011-11-03 80 views
1

我有一个起点范围和结束范围,我需要能够生成数字withing此范围内,并开始范围+ 1每次增加返回的数字,但从来没有产生相同数量的两倍。如何在起始和结束范围内生成数字?

不知道如何用C#做到这一点,任何帮助将是巨大的。

+0

我不知道你的意思是“增加由起始范围+ 1返回的数字”?这是否意味着如果范围从5到10,你会添加(5 + 1)到你生成的任何数字? – rossipedia

+0

这里的情况是什么?当然你已经知道如何定义一个整数和++它。你没有解释在你的特定情况下,这个不重要的东西...... –

+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); 
} 
0

由于它不是完全从您的文章清楚,我不揣冒昧地猜测,你想一个函数调用时给你下一个索引(如自动增量是跟踪下一个值的你,而不是一个列表) - 最小的详细方法是使用使用闭包,我想:

 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建议应该正常工作。

3

尝试Enumerable.Range(start, count)。它内置于框架中。

相关问题