0

私のコードを見てください。Enumerable.Range() の動作が開始値が 0 の場合と異なるのはなぜですか。

class Program
{
    static void Main(string[] args)
    {
        var range1 = Enumerable.Range(0, 7);
        PrintRange(range1);
        var range2 = Enumerable.Range(1, 8);
        PrintRange(range2);
        Console.ReadKey(true);
    }

    private static void PrintRange(IEnumerable<int> myRange)
    {
        foreach (int i in myRange)
        {
            Console.WriteLine("Linha {0}\n", i);
        }
        Console.WriteLine("\n========================================\n");
    }
}

範囲自体は同じです。ただし、1 から開始すると、より大きなものになります。:(結果は次のとおりです。

リニャ 0

リニャ 1

リニャ 2

リニャ 3

リニャ 4

リニャ 5

リニャ 6

========================================

リニャ 1

リニャ 2

リニャ 3

リニャ 4

リニャ 5

リニャ 6

リニャ 7

リニャ 8

========================================

4

2 に答える 2

9

2 番目の引数は ではありcountませんend

あなたの最初の呼び出しは、0 から始まる 7 つの連続した整数が欲しいのと同じですが、2 番目の呼び出しは1 から始まる 8 つの連続した整数が欲しいです。

MSDN Enumerable.Range

于 2012-11-28T17:45:36.057 に答える
2
public static IEnumerable<int> Range(
    int start,
    int count
)

2 番目のパラメーター ( count) は、生成する値の数を意味します。開始値と終了値ではなく、開始番号と値の数です。

// generate 7 integers starting from 0
Enumerable.Range(0, 7)
// generate 8 integers starting from 1
Enumerable.Range(1, 8)
于 2012-11-28T17:46:00.050 に答える