c# - 可枚举给出意外输出

标签 c# ienumerable enumerable

class Foo
{
    public static IEnumerable<int> Range(int start, int end)
    {
        return Enumerable.Range(start, end);
    }

    public static void PrintRange(IEnumerable<int> r)
    {
        foreach (var item in r)
        {
            Console.Write(" {0} ", item);
        }
        Console.WriteLine();
    }
}

class Program
{
    static void TestFoo()
    {
        Foo.PrintRange(Foo.Range(10, 20));
    }

    static void Main()
    {
        TestFoo();
    }
}

预期输出:

10  11  12  13  14  15  16  17  18  19  20

实际输出:

10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29

这段代码有什么问题?发生什么事了?

最佳答案

Enumerable.Range的第二个参数指定要生成的整数数,不是范围内的最后一个整数。

如有必要,很容易构建您自己的方法,或更新您现有的 Foo.Range 方法,以生成从 startend< 的范围 参数。

关于c# - 可枚举给出意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2470130/

相关文章:

c# - Xaml,按钮的click事件在命令之前运行?

c# - 如何使用 IEnumerable.Cast<> 和 .ToArray() 将 int 数组转换为枚举数组?

C#:在何处实现自定义 IEnumerator<T>

arrays - 如何在 Ruby 中迭代哈希数组并返回字符串中特定键的所有值

c# - 为什么 Enumerable.All 对空序列返回 true?

c# - C# 中的 DataTable 与 Array 性能

C# .Where 和 .Select

c# - 如何在知道方向、角度和距离的情况下找到位置?

c# - C# 中的成对迭代或滑动窗口枚举器

javascript - 无法枚举类的所有访问器 - 可能的错误?