【问题标题】:Weird behavior for Enumerable.Range(starts, count) [duplicate]Enumerable.Range(starts, count) 的奇怪行为 [重复]
【发布时间】:2012-11-16 16:01:06
【问题描述】:

看看我的代码。为什么 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

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

【问题讨论】:

    标签: c# .net range enumerable


    【解决方案1】:
    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)
    

    【讨论】:

      【解决方案2】:

      第二个参数是count 而不是end。

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

      MSDN Enumerable.Range

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-28
        • 2015-07-26
        • 2020-04-26
        • 2015-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多