充当 IEnumerable 的 ICollection

ICollection acting as IEnumerable

我正在访问 OrderedDictionaryKeys:

为什么这么说?:

Expanding the Results View will enumerate the IEnumerable

我认为比 IEnumerable 更具体的东西(例如 ICollectionIList 等)已经被列举出来了?

List<T> 实现了 IList<T>IEnumerable<T>。从逻辑上讲,它不能既已枚举又未枚举。这些接口只定义了一个契约,您可以通过它与对象进行交互。

重要的是实现接口的底层类型。 LINQ 表达式树使用延迟执行,对象结构表示挂起的 LINQ 操作。实现问题中接口的底层类型知道它是否表示这种延迟操作。

在这种情况下,底层对象确实使用了延迟执行,所以VS会提示你。