在 return Enumerable.Range() 中确定类型
Determine type in return Enumerable.Range()
试图了解以下示例中 returns Enumerable.Range()
函数的数据类型:
var numbers = Enumerable.Range(0, 100000000);
Console.WriteLine( numbers.GetType().FullName );
根据描述应该returnIEnumerable<int>
。但根据我的理解,这只是接口,returned 对象 class 应该实现这个接口。那是什么东西?
控制台输出带来
System.Linq.Enumerable+<RangeIterator>d__113
我不知道我可以在我的代码行中放置什么类型来代替 var
。我在 MSDN 中根本找不到 RangeIterator
类型。 d__113
在此输出中意味着什么?
如果您查看有问题的代码的源代码,它会阐明实际发生的事情
public static IEnumerable<int> Range(int start, int count) {
long max = ((long)start) + count - 1;
if (count < 0 || max > Int32.MaxValue) throw Error.ArgumentOutOfRange("count");
return RangeIterator(start, count);
}
static IEnumerable<int> RangeIterator(int start, int count) {
for (int i = 0; i < count; i++) yield return start + i;
}
I can't figure out what type I can place instead of var
in my code line
只需使用IEnumerable<int>
IEnumerable<int> numbers = Enumerable.Range(0, 100000000);
试图了解以下示例中 returns Enumerable.Range()
函数的数据类型:
var numbers = Enumerable.Range(0, 100000000);
Console.WriteLine( numbers.GetType().FullName );
根据描述应该returnIEnumerable<int>
。但根据我的理解,这只是接口,returned 对象 class 应该实现这个接口。那是什么东西?
控制台输出带来
System.Linq.Enumerable+<RangeIterator>d__113
我不知道我可以在我的代码行中放置什么类型来代替 var
。我在 MSDN 中根本找不到 RangeIterator
类型。 d__113
在此输出中意味着什么?
如果您查看有问题的代码的源代码,它会阐明实际发生的事情
public static IEnumerable<int> Range(int start, int count) {
long max = ((long)start) + count - 1;
if (count < 0 || max > Int32.MaxValue) throw Error.ArgumentOutOfRange("count");
return RangeIterator(start, count);
}
static IEnumerable<int> RangeIterator(int start, int count) {
for (int i = 0; i < count; i++) yield return start + i;
}
I can't figure out what type I can place instead of
var
in my code line
只需使用IEnumerable<int>
IEnumerable<int> numbers = Enumerable.Range(0, 100000000);