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

第二个论点count不是end

您的第一个电话相当于我想要 7 个以 0 开头的连续整数,而第二个电话是我想要 8 个以 1 开头的连续整数。

MSDN Enumerable.Range

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

第二个参数 ( 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 回答