我有一个HashSet,正在尝试将其转换为IReadOnlyCollection,但出现错误:
哈希集是
public class HashSet<T> : ICollection<T>, ISerializable, IDeserializationCallback, ISet<T>, IReadOnlyCollection<T>
我可以使用显式强制转换,但是我不知道为什么不能将其用作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
为什么没有显式强制转换就不能使用它?
我正在使用.NET Framework 4.5
最佳答案
您正在使用4.5,并且Hashset直到4.6才实现IReadOnlyCollection
从MSDN:
https://msdn.microsoft.com/en-us/library/bb359438(v=vs.110).aspx
关于c# - 无法将HashSet转换为IReadOnlyCollection,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32762631/