【发布时间】:2016-06-14 12:48:57
【问题描述】:
我有一本字典如下:
public enum Role { Role1, Role2, Role3, }
public enum Action { Action1, Action2, Action3, }
var dictionary = new Dictionary<Role, List<Action>>();
dictionary.Add(RoleType.Role1, new Action [] { Action.Action1, Action.Action2 }.ToList());
现在我希望能够构造一个只读字典,其值类型也是只读的,如下所示:
var readOnlyDictionary = new ReadOnlyDictionary<Role, ReadOnlyCollection<Action>>(dictionary);
由于TValue 类型的差异,最后一行显然会导致编译时错误。
使用List<TValue> 也是必要的,因为原始字典是以编程方式从外部源填充的。
有没有简单的方法来执行这种转换?
【问题讨论】:
-
你知道像列表这样的集合也可以使用集合初始化器来初始化吗? ;P
-
@MatíasFidemraizer:是的,我做到了。但我需要在运行时构建只读集合。
-
不,我建议这样做是因为您从数组构建列表...
-
@MatíasFidemraizer:我的错。这确实具有误导性。
-
为什么?
new List<int> { 1, 2, 3 }怎么了?
标签: c# .net dictionary readonly-collection