Идея свойства People заключается в предоставлении списка только для чтения, который можно зацикливать.Есть ли лучший способ сделать это или это решение считается приемлемым?
Если это ваше намерение, значит, вы его не достигли;Вы предоставили изменяемый список , который можно зациклить.
К счастью, вы каждый раз предоставляете другой изменяемый список, но вы все еще предоставляете изменяемый список.
Я был бы склонен предоставить неизменный список.Есть несколько способов сделать это.Если вы на самом деле предоставляете неизменный список, то у вас есть дополнительное преимущество, заключающееся в том, что список можно вычислять лениво , а затем кэшировать и повторно использовать бесконечно , а не пересоздавать каждый раз, когда вы запрашиваетеit.
Если вам требуется индексированный доступ, я бы создал коллекцию ReadOnlyCollection и обернул ее вокруг одного экземпляра списка, а затем кэшировал и повторно использовал коллекцию только для чтения.Обратите внимание, что если вы изменяете базовый список, коллекция, доступная только для чтения, будет изменяться;это всего лишь только для чтения список, это не неизменный список.
Если вам не требуется индексированный доступ, я бы указал, что возвращая IEnumerable<T>
вместо List<T>
.Затем вы можете вернуть любую неизменную коллекцию по вашему выбору.