Рассмотрим следующий методКак вернуть ICollection из метода?
public ICollection<int> method()
{
ICollection<int> col = new List<int>();
return col;
}
HashSet<int> result = (HashSet<int>) method();
Конечно я получаю сообщение об ошибке «Не удается привести объект типа List в HashSet», потому что я instantiaded седловины со списком в методе()
Можно иметь общий метод, который возвращает ICollection и может быть отправлен в HashSet или List, в зависимости от моих потребностей?
№ Объект, который вы возвращаете, представляет собой либо Список, либо HashSet, а не оба. Если вам нужен тот или другой, ваш метод должен вернуть тот или другой. Приведение результата вызова метода нарушает инкапсуляцию и не является хорошей практикой. –
Это было мое предположение, то почему рекомендуется возвращать ICollection, если мне нужно создать экземпляр с помощью конкретной коллекции? Почему бы не просто вернуть тип списка или HashSet ? –
Raston
Если вызывающий объект метода должен использовать только методы, доступные из ICollection, то да, предпочтительнее возвращать ICollection. –