Copy một List
Vấn đề:
- Trong C# khi tạo một list mới bằng các
List<T> list = new(otherList)thì các phần tử củalistvẫn được tham chiếu đến các phần tử củaotherList
Nguyên nhân:
- Trong C# khi sử dụng lệnh
List<T> list = new(otherList)chỉ tạo ra được một shallow copy (copy nông). Các phần tử vẫn được tham chiếu đến một vị trí.
Giải pháp
- Tạo ra một deep copy (copy sâu)
- Sử dụng vòng for duyệt và tạo mới từng phần tử sau đó thêm vào list mới.
- Sử dụng Linq để tạo phần từ mới
List<T> list = otherList.Select(e => new T()).ToList();List<T> list = otherList.ConvertAll(e => new T());