在C#中是否有相当于Pythons范围(12)?

时间:2009-08-13 11:22:58

标签: c# python range xrange

这对我来说不时出现:我有一些C#代码非常想要Python中的range()函数。

我知道使用

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

但是这会在功能用法中减少,就像我想要做一个Linq Sum()而不是编写上面的循环一样。

有没有内置?我想我总是可以用yield或者其他方式来推销自己的,但是 非常方便拥有

5 个答案:

答案 0 :(得分:77)

您正在寻找Enumerable.Range方法:

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

答案 1 :(得分:14)

为了补充每个人的答案,我认为我应该补充说Enumerable.Range(0, 12);更接近Python 2.x&#39; xrange(12),因为它是可枚举的。< / p>

如果有人特别需要列表或数组:

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

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

更接近Python的range(12)

答案 2 :(得分:7)

Enumerable.Range(start, numElements);

答案 3 :(得分:5)

Enumerable.Range(0,12);

答案 4 :(得分:0)

namespace CustomExtensions
{
    public static class Py
    {
        // make a range over [start..end) , where end is NOT included (exclusive)
        public static IEnumerable<int> RangeExcl(int start, int end)
        {
            if (end <= start) return Enumerable.Empty<int>();
            // else
            return Enumerable.Range(start, end - start);
        }

        // make a range over [start..end] , where end IS included (inclusive)
        public static IEnumerable<int> RangeIncl(int start, int end)
        {
            return RangeExcl(start, end + 1);
        }
    } // end class Py
}

用法:

using CustomExtensions;

Py.RangeExcl(12, 18);    // [12, 13, 14, 15, 16, 17]

Py.RangeIncl(12, 18);    // [12, 13, 14, 15, 16, 17, 18]