gpt4 book ai didi

c# - 为什么我需要将 IDictionary> 转换为 IDictionary>?

转载 作者:行者123 更新时间:2023-11-30 19:39:03 24 4
gpt4 key购买 nike

以下代码自HashSet起有效工具 IEnumerable :

IEnumerable<TEdge> edges = new HashSet<TEdge>();

但是如果我尝试使用与字典中键入的值相同的值,我会得到一个编译错误:

IDictionary<TVertex, IEnumerable<TEdge>> vertexEdges = 
new Dictionary<TVertex, HashSet<TEdge>>();

Cannot implicitly convert type 'System.Collections.Generic.Dictionary<TVertex,System.Collections.Generic.HashSet<TEdge>>' to 'System.Collections.Generic.IDictionary<TVertex,System.Collections.Generic.IEnumerable<TEdge>>'. An explicit conversion exists (are you missing a cast?)

我在这里错过了什么?编译器当然应该能够解决这个问题,所以我猜要么必须在限制背后做出一些有意义的决定,要么我做错了。

最佳答案

因为 IDictionary<TVertex, HashSet<TEdge>>不是 Dictionary<TVertex, IEnumerable<TEdge>> .如果是,您可以添加一个值,该值是 TEdge 的其他集合。除了 HashSet .

同样,您不能使用 List<Cat>List<IAnimal> , 否则你可以添加 Dog到列表中。

另请注意,转换将在运行时失败。

关于c# - 为什么我需要将 IDictionary<T, HashSet<S>> 转换为 IDictionary<T, IEnumerable<S>>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29686601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com