充当 IEnumerable 的 ICollection
ICollection acting as IEnumerable
我正在访问 OrderedDictionary
的 Keys
:
为什么这么说?:
Expanding the Results View will enumerate the IEnumerable
我认为比 IEnumerable
更具体的东西(例如 ICollection
、IList
等)已经被列举出来了?
List<T>
实现了 IList<T>
和 IEnumerable<T>
。从逻辑上讲,它不能既已枚举又未枚举。这些接口只定义了一个契约,您可以通过它与对象进行交互。
重要的是实现接口的底层类型。 LINQ 表达式树使用延迟执行,对象结构表示挂起的 LINQ 操作。实现问题中接口的底层类型知道它是否表示这种延迟操作。
在这种情况下,底层对象确实使用了延迟执行,所以VS会提示你。
我正在访问 OrderedDictionary
的 Keys
:
为什么这么说?:
Expanding the Results View will enumerate the IEnumerable
我认为比 IEnumerable
更具体的东西(例如 ICollection
、IList
等)已经被列举出来了?
List<T>
实现了 IList<T>
和 IEnumerable<T>
。从逻辑上讲,它不能既已枚举又未枚举。这些接口只定义了一个契约,您可以通过它与对象进行交互。
重要的是实现接口的底层类型。 LINQ 表达式树使用延迟执行,对象结构表示挂起的 LINQ 操作。实现问题中接口的底层类型知道它是否表示这种延迟操作。
在这种情况下,底层对象确实使用了延迟执行,所以VS会提示你。