У меня есть HashSet, и я пытаюсь передать его в IReadOnlyCollection, но я получаю ошибку:
Невозможно неявно преобразовать тип "System.Collections.Generic.HashSet" в "System.Collections.Generic.IReadOnlyCollection". Явное преобразование существует (вам не хватает роли?)
Hashset - это
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