我有一个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/

10-12 22:50