Cannot convert HashSet to IReadOnlyCollection

前端 未结 2 407
故里飘歌
故里飘歌 2021-01-17 10:56

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

相关标签:
2条回答
  • 2021-01-17 11:35

    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.

    0 讨论(0)
  • 2021-01-17 11:38

    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

    0 讨论(0)
提交回复
热议问题