2009-08-13 46 views
37

這種現象隨時會對我產生影響:我有一些C#代碼嚴重地需要Python中的range()函數。在C#中是否有相當於Pythons範圍(12)的?

我知道使用

for (int i = 0; i < 12; i++) 
{ 
    // add code here 
} 

,但這剎車功能性用途下來,當我想要做一個LINQ Sum()不是編寫上述循環。

有沒有內建?我想我總是可以用yield或者類似的東西來滾動我自己,但是這會是所以得心應手,只是

+0

這不是Enumeration.Range,它是Enumerable.Range。 – 2010-06-16 11:09:40

+0

修好了。謝謝。 – 2010-06-16 11:30:34

回答

72

您正在尋找的方法:

var mySequence = Enumerable.Range(0, 12); 
+1

注意:這需要System.Linq和C#3.0。 – crb 2009-08-31 17:55:01

+0

crb:C#3不是必需的。你可以在C#2中使用這個類,但是你需要引用.NET 3.5框架中的System.Core。 – 2010-12-30 09:10:50

+5

這是令人困惑的,因爲我相信Python的版本是'(start,end)',.NET的版本是'(start,count)' - 不要把它們混淆起來! – jocull 2014-05-27 14:29:11

6
Enumerable.Range(start, numElements); 
5

Enumerable.Range(0,12);

13

只是爲了補充大家的答案,我想我應該補充一點,Enumerable.Range(0, 12);更接近於Python 2.x的xrange(12),因爲它是一個可枚舉的。

如果有人特別要求列表或數組:

Enumerable.Range(0, 12).ToList(); 

Enumerable.Range(0, 12).ToArray(); 

更接近Python的range(12)

相關問題