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
方法,以生成从 start
到 end< 的范围
参数。
关于c# - 可枚举给出意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2470130/