【发布时间】:2017-10-24 12:57:06
【问题描述】:
在 C# 中,这两个容器之间的主要区别是什么(在功能或用例方面)? Google 上似乎没有任何信息可以比较这些。
System.Collections.ObjectModel.ReadOnlyDictionary System.Collections.Immutable.ImmutableDictionary
我知道ImmutableDictionary 是线程安全的。 ReadOnlyDictionary 也一样吗?
这不是How to properly use IReadOnlyDictionary? 的副本。这个问题是关于如何使用 IReadOnlyDictionary。这个问题是关于两者之间的区别(正如有人在 2015 年对该主题评论的那样,这将是一个不同的问题 - 即这个问题)
【问题讨论】:
-
您只能从
ReadOnlyDictionary中读取。ImmutableDictionary允许您执行 add 和 clear 之类的操作,但不是更改字典,而是创建一个带有更改的新字典。 -
juharr 说的。并且进一步扩展,只读集合将始终是线程安全的,特别是因为您不能更新值,也不能添加到它。
-
绝对错误!仅仅因为字典的使用者不能更新它并不意味着它是线程安全的。底层字典的所有者可以更新它,在这种情况下,它根本不是线程安全的。 (MSDN:不保证任何实例成员都是线程安全的。)
-
这能回答你的问题吗? How to properly use IReadOnlyDictionary?
-
不,抱歉,它没有回答这个问题。这个问题是关于如何使用 IReadOnlyDictionary。这个问题是关于两者之间的区别(正如 2015 年有人在该帖子中评论的那样,这将是一个不同的问题 - 即这个问题)
标签: c# .net immutable-collections