相关疑难解决方法(0)

.NET中是否有只读通用字典?

我在我的只读属性中返回对字典的引用.如何防止消费者更改我的数据?如果这是一个IList我可以简单地返回它AsReadOnly.我能用字典做些什么吗?

Private _mydictionary As Dictionary(Of String, String)
Public ReadOnly Property MyDictionary() As Dictionary(Of String, String)
    Get
        Return _mydictionary
    End Get
End Property
Run Code Online (Sandbox Code Playgroud)

.net dictionary readonly

185
推荐指数
6
解决办法
7万
查看次数

C#有办法给我一个不可变的字典吗?

核心C#库中是否有任何可以为我提供不可变字典的东西?

Java的一些东西:

Collections.unmodifiableMap(myMap);
Run Code Online (Sandbox Code Playgroud)

而且只是为了澄清,我不打算阻止键/值本身被改变,只是字典的结构.如果任何IDictionary的mutator方法被调用(Add, Remove, Clear),我想要快速和大声失败的东西.

.net c# java collections dictionary

68
推荐指数
3
解决办法
2万
查看次数

ReadOnlyDictionary和ImmutableDictionary之间有什么区别?

在C#中,这两个容器之间的关键区别(在功能或用例方面)是什么?似乎没有任何信息可以在Google上比较这些信息.

System.Collections.ObjectModel.ReadOnlyDictionary System.Collections.Immutable.ImmutableDictionary

我知道ImmutableDictionary是线程安全的.ReadOnlyDictionary也是如此吗?

.net c# immutable-collections

21
推荐指数
2
解决办法
3017
查看次数

使字典只能在C#中读取

我有一个Dictionary<string, List<string>>并希望将该成员公开为只读.我看到我可以将它作为一个返回IReadOnlyDictionary<string, List<string>>,但我无法弄清楚如何将它作为一个返回IReadOnlyDictionary<string, IReadOnlyList<string>>.

有没有办法做到这一点?在c ++中,我只是使用const,但C#没有.

请注意,IReadOnlyDictionary在这种情况下简单地使用a 没有帮助,因为我希望只读取值.看来唯一的方法是构建另一个IReadOnlyDictionary,并向它们添加IReadOnlyList.

另一个我不会兴奋的选择是创建实现接口IReadOnlyDictionary>的包装器,并让它保存原始实例的副本,但这似乎有点过分.

c# collections covariance

11
推荐指数
2
解决办法
2万
查看次数