2009-08-13 15 views
37

To od czasu do czasu pojawia się dla mnie: Mam kod C#, który bardzo chce funkcji range() dostępnej w Pythonie.Czy istnieje odpowiednik zakresu Pythons (12) w C#?

Jestem świadomy używając

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

Ale to hamulce w dół zastosowań funkcjonalnych, jak wtedy, gdy chcę zrobić LINQ Sum() zamiast pisać powyższą pętlę.

Czy są jakieś wbudowane? Domyślam się, że zawsze mogłem po prostu przetasować własne z yield lub podobnym, ale to byłby , więc przydatny po prostu mają.

+0

To nie jest Enumeration.Range, to Enumerable.Range. Naprawiono to: –

+0

. dzięki. –

Odpowiedz

72

Szukacie sposobu :

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

Uwaga: wymaga to System.Linq i C# 3.0. – crb

+0

crb: C# 3 nie jest wymagane. Możesz użyć tej klasy z C# 2, ale musisz odwołać się do System.Core, który jest w środowisku .NET 3.5. –

+5

To jest mylące, ponieważ uważam, że wersja Pythona to '(start, end)', gdzie wersja .NET jest '(start, count)' - nie róbcie pomyłki w ich mieszaniu! – jocull

6
Enumerable.Range(start, numElements); 
5

Enumerable.Range (0,12);

13

Tylko dla uzupełnienia odpowiedzi wszystkich, pomyślałem, że powinienem dodać, że Enumerable.Range(0, 12); jest bliżej Python 2.x z xrange(12), ponieważ jest to przeliczalne.

Jeśli ktoś wymaga specjalnie listę lub tablicę:

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

lub

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

są bliżej Pythona range(12).

Powiązane problemy