c# - 将 Dictionary<Key, Value> 转换为 IReadOnlyDictionary<Key, IValue>?

标签 c# dictionary interface casting

我们可以很容易地做到这一点:

List<Value> list;
IReadOnlyList<IValue> List => list;

但是我们怎样才能对 IReadOnlyDictionary 做同样的事情呢?

Dictionary<Key, Value> dict;
IReadOnlyDictionary<Key, IValue> Dict => dic; //impossible

最佳答案

你不能,但是以分配重新散列为代价你可以投影它:

IReadOnlyDictionary<string, IValue> Dict 
   => dict.ToDictionary(x => x.Key, x => (IValue)x.Value);

尽管您可能需要重新考虑您的问题。

关于c# - 将 Dictionary<Key, Value> 转换为 IReadOnlyDictionary<Key, IValue>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56964292/

相关文章:

c# - 访问字典中数组的内容

javascript - 通过 TimeSlider 在传单 map 中显示模型输出图像

java - 在java中没有这样的关键字的静态接口(interface)和普通接口(interface)有什么区别?

c# - 在 Razor 中使用静态变量

c# - 阻止应用程序打开

javascript - 更新 ImmutableJS 列表中的多个条目

c# - 如何避免循环依赖 : DAL. DbContext.DbSet<BLL.Model>

c# - 使用 protobuf.net 反序列化缺失类型

C# foreach 遍历 Dictionary<String, ObjectType> 中包含的对象的属性

c#,在子类中强制方法实现