【发布时间】:2014-02-20 13:44:17
【问题描述】:
将Dictionary<int, List<User>> 转换为Dictionary<int, IEnumerable<User>> 的最有效方法是什么?
这样做的原因是我有一个构建 Dictionary<int, List<User>> 的方法,但我不希望将可变的 List 返回给调用代码。
我是否必须将这本词典投影到新类型中?
【问题讨论】:
-
字典是否需要将
List<User>作为值?您可以填写List<User>并将其添加到Dictionary<int, IEnumerable<User>>。 -
如果可以的话,您可以编写一个返回 IEnumerable 的方法,该方法会为调用者查找索引。这样您就不必一次性转换所有内容,而只需根据索引请求进行转换。
-
将其设为
IEnumerable不会阻止可变性。如果您想保证调用者不能更改底层列表,您需要一个不可变集合或“冻结”集合。
标签: c# .net dictionary casting ienumerable