2011-11-03 79 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)。它內置於框架中。

相關問題