【问题标题】:difference between IEnumerable vs Dictionary C#IEnumerable 与 Dictionary C# 之间的区别
【发布时间】:2013-09-15 01:04:08
【问题描述】:

如果你去this link in stackoverflow。有一个关于将 Ienrumerable 转换为 Dictionary 的问题。所以我的问题是,当我们有字典对象时,为什么我们需要 IEnumerable ?

实际上,我正在尝试找出它们之间的区别。

【问题讨论】:

    标签: c#


    【解决方案1】:

    IEnumerable 是一个interface。接口不能自己实例化,必须实例化为实现给定接口的类。

    Dictionary 是一个实现IEnumerable 接口的hash-map 数据结构,因此它具有IEnumerable 接口要求其实现具有的所有方法和属性,使得Enumerate 字典结构成为可能.

    简而言之:IEnumerable 是一个接口,而 Dictionary 是一个实现该接口的类。

    【讨论】:

    • 是的,这就是我的意思是您使用接口来创建类,而 IEnumerable 是接口而不是类。该接口由字典实现。因此,既然 Dictionary 使用了 IEnumerable,为什么不有人只返回 Dictionary 对象。无论如何,我现在一定是错过了一些我正在学习的东西,这样我才能开始有所了解。
    • IEnumerable 继承几乎只保证对象可以迭代。 Dictionary 总是 IEnumberable,IEnumerable 对象并不总是 Dictionary。
    • 感谢 Jite 的解释,但我在说什么。 IEnumerable 是一个接口。如果我阅读接口的定义,它说接口是在其他类中实现的,并且它们的成员必须在被调用的类中定义。如果我遵循定义,那么我很困惑哪个原则可以直接为接口赋值。无论如何,这是我在这个主题上的最后一篇文章,谢谢。
    • @Jite 这是一个很棒的编辑。我很高兴看到有人真正回答了所提出的问题,而不是侮辱提问者,就像许多其他人在这个问题上留下了 cmets/answers
    【解决方案2】:

    好吧,您链接的问题是相反的问题。如何从IEnumerable 转换为Dictionary。为什么我们要反过来转换?我们可能不会。但你也可以问为什么有人会将特定的类转换为对象?

    答案是有时您希望有一个变量/方法参数/类成员,它可以是许多事物之一:字典或其他事物。为此,您可以使用IEnumerable

    【讨论】:

    • "将特定的类转换为对象" o_O
    【解决方案3】:

    所以我的问题是,当我们拥有字典对象时,为什么还需要 IEnumerable?

    您提到的问题正好相反:创建Dictionary 来自 IEnumerable。所以你有IEnumerable,你想有Dictionary

    当你有例如它可能是必需的。 e List 并且您希望通过 item 属性值之一更快地访问集合元素。

    并且可以肯定的是,Dictionary<TKey, TValue> 已经实现了 IEnumerable<T>,因此不需要在相反方向进行转换(除非您尝试更改 T)。

    【讨论】:

    • 对不起,我正在努力学习。我正在阅读有关泛型对象的信息,它说字典和所有泛型对象都使用 IEnumerable 接口。由于缺乏知识,我不太清楚答案,但我会在阅读更多内容后回来查看。
    猜你喜欢
    • 2011-06-25
    • 2010-11-26
    • 2023-03-12
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    相关资源
    最近更新 更多