I have a HashSet and I am trying to cast it into IReadOnlyCollection, but I am getting error:
Cannot implicitly convert type \'System.Collections.Gene
This is because in .NET 4.5, HashSet<T>
doesn't implement IReadOnlyCollection<T>
. In .NET 4.6, it does, so the implicit cast works as expected.
BTW, the explicit cast in your code snippet compiles, but it will fail at runtime. It compiles because the set
variable is of type HashSet<DateTime>
, and since HashSet<DateTime>
is not sealed, there might be subclasses that implement the interface.
You're using 4.5 and Hashset doesn't implement IReadOnlyCollection until 4.6
From MSDN:
HashSet implements the IReadOnlyCollection interface starting with the .NET Framework 4.6; in previous versions of the .NET Framework, the HashSet class did not implement this interface.
https://msdn.microsoft.com/en-us/library/bb359438(v=vs.110).aspx