Вы должны сделать глубокое копирование (т.е. клонировать каждый элемент в исходном списке):
// Not shallow copy (copy shares items with originalList)
// List<DataPair> copy = new List<DataPair>(originalList.AsReadOnly());
// But deep copy:
List<DataPair> copy = new List<DataPair>();
// copy has its own items (new DataPair...)
foreach (var item in originalList)
copy.Add(new DataPair(item.Price, item.Volume));
Другая возможность состоит в том, чтобы превратить class
в struct
(так как DataPair
содержит 2 double
поле только, это хороший кандидат для struct
):
// Note "struct" instead of "class"
public struct DataPair : IComparable<DataPair> {
...
}
Теперь DataPair
будет передано значение (не ссылка ) и
List<DataPair> copy = new List<DataPair>(originalList.AsReadOnly());
будут отображаться в виде глубокой копии.