Во многих проектах, над которыми я работаю, всякий раз, когда мне приходится возвращать коллекцию только для чтения, я использую интерфейс IEnumerable<T>
и делаю его типичным следующим:
Public ReadOnly Property GetValues() As IEnumerable(Of Integer)
Get
'code to return the values'
End Get
End Property
В большинстве случаев я возвращаю список, но в некоторых функциях и свойствах только для чтения я возвращаю массив, который также служит цели, любезно предоставленными методами расширения.
Мой вопрос заключается в том, что я нарушаю любые принципы проектирования, возвращая IEnumerable<T>
вместо определенных типов (например: List<T>
, HashSet<T>
, Stack<T>
или Array
s)?