Нет, второй список не только для чтения, это еще список генерируется из IEnumerable<T>
(в частности ICollection<T>
здесь). Метод .AsReadOnly()
просто дает ReadOnlyCollection<MyObject>
, но мы не изменяем , что коллекции, когда возились со вторым списком.
Вместо этого, вы создали новый List<MyObject>
с его членами, является редактируемые (через List<T>(IEnumerable<T>)
конструктор). Это генерирует, как и любой другой источник IEnumerable<T>
, который является ICollection<T>
, он выполняет .CopyTo()
под ним.
В случае ReadOnlyCollection<T>
(который реализует ICollection<T>
), это вызывающий .CopyTo()
на оригинальный IList<T>
под что он был из, так что в основном то, что у вас есть такой же, как:
List<MyObject> FirstList = new List<MyObject>();
// Add items to FirstList.
List<MyObject> SecondList = new List<MyObject>(FirstList);
.... что касается второго списка. В других случаях, когда IEnumerable<T>
, переданный конструктору, равен , а не a ICollection<T>
, он будет перебирать по коллекции и .Add()
каждого члена вместо этого ... но это все равно не повлияет на изменчивость нового списка и его членов.