是什么原因导致此系统.InvalidCastException?



当我尝试以下操作时,我看到System.InvalidCastException

IReadOnlyDictionary<string, IReadOnlyCollection<MyType>> results = new ConcurrentDictionary<string, ConcurrentBag<MyType>>();

我不明白此错误消息的根本原因:

ConcurrentBag 实现了 IReadOnlyCollection,ConcurrentDictionary 实现了 IReadOnlyDictionary。

为什么铸造失败?

取而代之的是:

IReadOnlyDictionary<string, IReadOnlyCollection<MyType>> results = new ConcurrentDictionary<string, ConcurrentBag<MyType>>();

您需要这样做:

ConcurrentDictionary<string, IReadOnlyCollection<MyType>> results = new ConcurrentDictionary<string, IReadOnlyCollection<MyType>>();

ConcurrentDictionary<string, ConcurrentBag<Point>> results = new ConcurrentDictionary<string, ConcurrentBag<Point>>();

这称为协方差限制。以下是更多关于它的信息: 基本上,如果你有一个父级的容器,你可以把任何派生类放进去。但是如果你有一个孩子的容器,那么你就不能把父母放在里面。

在瀑布中,水从上到下落下。

https://learn.microsoft.com/en-us/previous-versions/dotnet/netframework-4.0/dd799517(v=vs.100(

相关内容

  • 没有找到相关文章

最新更新