【发布时间】:2018-10-17 01:54:20
【问题描述】:
当我尝试以下操作时,我看到了System.InvalidCastException:
IReadOnlyDictionary<string, IReadOnlyCollection<MyType>> results = new ConcurrentDictionary<string, ConcurrentBag<MyType>>();
我不明白此错误消息的根本原因:
ConcurrentBag 实现 IReadOnlyCollection,ConcurrentDictionary 实现 IReadOnlyDictionary。
为什么转换失败?
【问题讨论】:
-
ConcurrentBag<MyType>实现IReadOnlyCollection<MyType>。ConcurrentDictionary<string, ConcurrentBag<MyType>>实现了IReadOnlyDictionary<string, ConcurrentBag<MyType>>,但没有实现IReadOnlyDictionary<string, IReadOnlyCollection<MyType>>。
标签: c# casting covariance