IEnumerable什么时候不能转成IList?
When can IEnumerable not be converted to IList?
我在我正在从事的项目中找到了这段代码:
IEnumerable<int> foo = iEnumerableIntVariable as IList<int> ?? iEnumerableIntVariable.ToList();
我知道 as
returns null if it can't successfully convert,然后 ToList()
会开始完成这项工作,但在什么情况下会发生这种情况?
除其他外,考虑这个简单的案例:
public IEnumerable<int> GetListOfNumbers()
{
for (int i = 0; i < 100; i++)
yield return i;
}
这 returns 一个真正的 IEnumerable
也不会实现 IList
(MSDN)。显然,此 "collection" 中的 adding/removing 没有任何意义,也无法通过索引访问元素。
我在我正在从事的项目中找到了这段代码:
IEnumerable<int> foo = iEnumerableIntVariable as IList<int> ?? iEnumerableIntVariable.ToList();
我知道 as
returns null if it can't successfully convert,然后 ToList()
会开始完成这项工作,但在什么情况下会发生这种情况?
除其他外,考虑这个简单的案例:
public IEnumerable<int> GetListOfNumbers()
{
for (int i = 0; i < 100; i++)
yield return i;
}
这 returns 一个真正的 IEnumerable
也不会实现 IList
(MSDN)。显然,此 "collection" 中的 adding/removing 没有任何意义,也无法通过索引访问元素。