50

これは時々発生します。Pythonでrange()関数を使用できるようにしたいと思っているC#コードがいくつかあります。

私は使用することを知っています

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

Sum()しかし、上記のループを作成する代わりにLinqを実行したい場合のように、これは機能的な使用法でブレーキをかけます。

ビルトインはありますか?いつでも自分で転がすことができると思いyieldますが、これは持っているだけでとても便利です。

4

5 に答える 5

93

あなたは方法を探していますEnumerable.Range

var mySequence = Enumerable.Range(0, 12);
于 2009-08-13T11:24:19.693 に答える
16

Enumerable.Range(0, 12);みんなの答えを補足するために、Python 2.xに近いものを追加する必要があると思いxrange(12)ました。これは、列挙可能だからです。

特にリストまたは配列が必要な場合:

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

また

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

Pythonに近いですrange(12)

于 2014-04-14T14:22:09.377 に答える
7
Enumerable.Range(start, numElements);
于 2009-08-13T11:24:48.583 に答える
5

Enumerable.Range(0,12);

于 2009-08-13T11:25:53.217 に答える
4
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]
于 2018-04-03T10:45:10.770 に答える