2009-08-13 3 views
37

Это время от времени появляется для меня: у меня есть код на C#, который плохо нуждается в функции range(), доступной в Python.Существует ли эквивалент диапазона Pythons (12) в C#?

Я знаю, используя

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

Но это тормоза вниз в функциональных использований, как тогда, когда я хочу сделать Linq Sum() вместо написания выше цикла.

Есть ли встроенные функции? Думаю, я всегда мог бы просто свернуть с помощью yield или такого, но это было бы , поэтому можно было бы просто иметь.

+0

Это не Enumeration.Range, это Enumerable.Range. –

+0

исправил это. Благодарю. –

ответ

72

Вы ищете метод Enumerable.Range:

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

Примечание: для этого требуются System.Linq и C# 3.0. – crb

+0

crb: C# 3 не требуется. Вы можете использовать этот класс из C# 2, но вам нужно обратиться к System.Core, который находится в среде .NET 3.5. –

+5

Это запутанно, потому что я считаю, что версия Python - это '(начало, конец)', где версия .NET: '(start, count)' - не делайте ошибку, смешивая их! – jocull

13

Чтобы удовлетворить все ответы, я подумал, что должен добавить, что Enumerable.Range(0, 12); ближе к xrange(12) Python 2.x, потому что это перечислимое.

Если кто-то требует, в частности, список или массив:

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

или

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

ближе к Питона range(12).

Смежные вопросы