.Net 中 ReadOnlyDictionary 和 Lookup 的区别
Difference between ReadOnlyDictionary and Lookup in .Net
我仍在学习很多关于不可变性以及何时使用此类对象的知识,并且已经开始将更多 Lookups 纳入我的编码中,因为我知道它们是不可变的,因此通常更好用比可以由客户更改的词典。
话虽这么说,但我知道在将 ReadOnlyDictionaries 引入 .Net 方面做了大量工作,但我有点困惑,哪些地方比另一个更有用,以及它们的具体特点不同的。我在网上看过,但似乎找不到任何解释这种差异的文章。
例如,我看到 this question 并认为 Lookup 是更理想的解决方案,但我很困惑为什么不是这样。
任何人都可以指出我正确的方向/解释其中一个可以在另一个上使用的地方。
谢谢!!
查找是对集合进行分组的一种简单方法,您可以在其中为给定键提供一个 或 多个 值。字典为您提供给定键的 一个 值,并且只有一个值。根据您的情况,拥有一个可以返回 one 值的字典可能最有意义,或者您可能想要一个可以为您提供值集合的查找。
如果你想要某个键的值集合,如果没有查找,你会遇到像
这样丑陋的东西
Dictionary<int, IEnumerable<String>>
呸。有关查找的更多信息,请参阅 https://msdn.microsoft.com/en-us/library/bb460184%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396。
我仍在学习很多关于不可变性以及何时使用此类对象的知识,并且已经开始将更多 Lookups 纳入我的编码中,因为我知道它们是不可变的,因此通常更好用比可以由客户更改的词典。
话虽这么说,但我知道在将 ReadOnlyDictionaries 引入 .Net 方面做了大量工作,但我有点困惑,哪些地方比另一个更有用,以及它们的具体特点不同的。我在网上看过,但似乎找不到任何解释这种差异的文章。
例如,我看到 this question 并认为 Lookup 是更理想的解决方案,但我很困惑为什么不是这样。
任何人都可以指出我正确的方向/解释其中一个可以在另一个上使用的地方。
谢谢!!
查找是对集合进行分组的一种简单方法,您可以在其中为给定键提供一个 或 多个 值。字典为您提供给定键的 一个 值,并且只有一个值。根据您的情况,拥有一个可以返回 one 值的字典可能最有意义,或者您可能想要一个可以为您提供值集合的查找。
如果你想要某个键的值集合,如果没有查找,你会遇到像
这样丑陋的东西Dictionary<int, IEnumerable<String>>
呸。有关查找的更多信息,请参阅 https://msdn.microsoft.com/en-us/library/bb460184%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396。