gpt4 book ai didi

c# - IDictionary 与哈希表 -

转载 作者:太空宇宙 更新时间:2023-11-03 20:25:18 49 4
gpt4 key购买 nike

很多消息来源都在谈论这个问题,但我不太理解这个概念。 IDictionary 是通用的,它的类型安全等。

当我深入研究 EntityFrameworkv5 时,我看到一个属性在 LogEntry 类中声明如下。

private IDictionary<string, object> extendedProperties;

问题是为什么他们更喜欢 IDictionary 而不是 Hashtable,因此 Hashtable 也将键作为字符串和对象。唯一的原因是通过选择 IDictionary 使属性具有多态性?

提前致谢。

最佳答案

如今,使用 Hashtable 的理由很少. Dictionary<>在很多方面都比它好。如果不是,您通常可以找到另一个强类型集合,它比任何一个都更好地满足您的目的。

  • 类型安全。
  • 没有装箱和拆箱的大量开销。
  • 实现 IDictionary<> ,与 .NET 和第 3 方代码非常兼容。
  • 表现优于 Hashtable在许多领域。查看链接:Link #1 , Link #2 .

如果您问为什么将属性键入为 IDictionary<>而不是 Dictionary<> ,这是出于几个原因。

  • 通常认为最好的做法是尽可能经常使用接口(interface),而不是常规类型,尤其是在框架中。
  • 可以很容易地更改接口(interface)的实现,但很难更改具体类的性质而不导致与相关代码的兼容性问题。
  • 使用接口(interface),您可以利用 Covariance and Contravariance .
  • 外部代码更有可能使用更通用的接口(interface)IDictionary<>比具体类Dictionary<> .使用 IDictionary<>从而让其他开发商更好地与属性(property)互动。
  • 可能还有很多。这些都在我的脑海中。

关于c# - IDictionary 与哈希表 -,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10963374/

49 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com