<分区>
Possible Duplicate:
Puzzling Enumerable.Cast InvalidCastException
你好,
我刚刚注意到 Enumerable.Cast<T>
有点奇怪扩展方法...似乎无法从 int
转换至 long
,即使这个转换是完全合法的。
以下代码失败并返回 InvalidCastException
:
foreach (var item in Enumerable.Range(0,10).Cast<long>())
{
Console.WriteLine(item);
}
但是这段代码,我认为是等价的,确实有效:
foreach (var item in Enumerable.Range(0,10).Select(i => (long)i))
{
Console.WriteLine(item);
}
任何人都可以解释这种行为吗?我用 Reflector 查看了 Cast 方法的代码,但是 Reflector 不能解释迭代器 block ,所以很难理解......