本文介绍了无法将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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!