本文介绍了无法将HashSet转换为IReadOnlyCollection的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

限时删除!!

我有一个HashSet,我试图将其转换为IReadOnlyCollection,但出现错误:

I have a HashSet and I am trying to cast it into IReadOnlyCollection, but I am getting error:

哈希集为a

public class HashSet<T> : ICollection<T>, ISerializable, IDeserializationCallback, ISet<T>, IReadOnlyCollection<T>

我可以使用显式强制转换,但我不知道为什么不能只使用原因

I can use explicit cast, but I don't know the reason why I can't just use it as IReadOnlyCollection.

HashSet<DateTime> set = new HashSet<DateTime> { DateTime.Today };
ICollection<DateTime> collection = set; // OK
ISerializable serializable = set;       // OK
IDeserializationCallback deserializationCallback = set; // OK
ISet<DateTime> iSet = set;                              // OK
IReadOnlyCollection<DateTime> castReadOnlyCollection = (IReadOnlyCollection<DateTime>)set; // OK
IReadOnlyCollection<DateTime> readOnlyCollection = set; // Error

为什么没有显式强制转换就不能使用它?

Why can't I use it without an explicit cast?

我正在使用.NET Framework 4.5

I am using .NET framework 4.5

推荐答案

您正在使用4.5,而Hashset却没有t实施IReadOnlyCollection,直到4.6

You're using 4.5 and Hashset doesn't implement IReadOnlyCollection until 4.6

从MSDN:

这篇关于无法将HashSet转换为IReadOnlyCollection的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

1403页,肝出来的..

09-07 14:26