当前位置: 首页 > 知识库问答 >
问题:

为什么idictionary同时实现ICollection和IEnumerable

申屠飞
2023-03-14

我查看了为IDictionary 接口生成的元数据,注意到它实现了

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

这不是多余的吗?查看icollection 的元数据,可以发现它已经实现了IEnumerable 、IEnumerable

共有1个答案

冯阳云
2023-03-14

元数据显示了所有已实现的接口,特别是通过继承获得的接口。如果您查看IDictionary 的引用源,您会看到实际实现只实现icollection > :

public interface IDictionary<TKey, TValue> : ICollection<KeyValuePair<TKey, TValue>>
 类似资料:
  • 我在使用scala时做了如下的事情:

  • 为什么它们被用于不同类型的任务?它们在处理计算任务和io任务时有什么不同? schedulers.io()--用于I/O绑定的工作,如阻塞I/O的异步性能,该调度程序由线程池支持,线程池将根据需要增长;对于普通的计算工作,切换到Schedulers.Computation();默认情况下,schedulers.io()是一个CachedThreadScheduler,它类似于具有线程缓存的新线程调

  • 的实现实现了以及扩展了。但是在Java文档中,您可以看到AbstractList已经实现了List。那么在扩展AbstractList的同时实现List会不会是多余的呢? 我的第二个问题 请看一下下面的代码: Arrays类的方法包含自己的ArrayList实现。但是这个只扩展了AbstractList,而没有实现List。但是上面的代码编译。 但将代码修改为以下内容时 我得到一个错误: 这背后的

  • 我认为将对象强制转换为相当简单,但是

  • 问题内容: 有没有之间的差异和。如果我进行双重布尔检查,这种方法是正确的还是多余的?有没有更短的方法来做同样的事情? 问题答案: 这是完全多余的。或多或少简写,并且是类似于。即做相反的事情,再加上一个额外的检查值的 真实性 。 换句话说,与相同,但是如果变量不存在,则不会发出警告。这就是该函数的重点:进行布尔比较,而不必担心设置变量。 手册说得像这样: 与的相反, 只是未设置变量时不生成警告。 您

  • 问题内容: 在多个开源项目中,我看到人们确实在获取当前文件的绝对路径。 但是,我发现并产生相同的结果。似乎有点多余。 人们使用它是有原因的吗? 问题答案: 在支持它们的操作系统上取消引用符号链接。 只需从路径中删除类似和的东西,即可提供从目录树的根到命名文件(或符号链接)的完整路径 例如,在Ubuntu上 符号链接可以包含相对路径,因此需要同时使用两者。内部调用可能会返回包含嵌入式部件的路径,然后