我正在查看为 IDictionary<TKey, TValue> 接口(interface)生成的元数据,我注意到它实现了

public interface IDictionary<TKey, TValue> : ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable

这不是多余的吗?查看 ICollection<T> 的元数据,它表明它已经实现了 IEnumerable<T>, IEnumerable
为什么 IEnumerable<T> 实现 IEnumerable ,而 ICollection<T> 没有实现 ICollection

最佳答案

元数据显示所有已实现的接口(interface),尤其是通过继承获得的接口(interface)。如果你查看 IDictionary<TKey, TValue>reference source ,你会发现实际的实现只实现了 ICollection<KeyValuePair<TKey, TValue>> :

public interface IDictionary<TKey, TValue> : ICollection<KeyValuePair<TKey, TValue>>

关于c# - 为什么 IDictionary<TKey, TValue> 同时实现 ICollection 和 IEnumerable,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50170629/

10-11 07:42