Если вы используете .NET 4.5 или выше, вы можете вернуть _children
как IReadOnlyList<T>
:
public IReadOnlyList<Person> Children
{
get
{
return _children;
}
}
Чем это отличается от возврата IList<Person>
через _children.AsReadOnly()
? IReadOnlyList<Person>
даже не имеет методов мутации. Рассмотрим следующий код:
somePerson.Children[0] = null;
При использовании IReadOnlyList<Person>
этот код не будет скомпилирован. При использовании .AsReadOnly()
этот код приведет к исключению времени выполнения.
Чем это отличается от возврата ReadOnlyCollection<Person>
через _children.AsReadOnly()
? Там нет ReadOnlyCollection<Person>
созданного объекта-оболочки. Кроме того, я не вижу большой разницы.