キャッシュは.NETのポインタを参照するだけなので、これが.NETの動作方法ですList
。chartData_Type
値型か参照型かわからない。
値型の場合、次のように簡単に使用できます。
List<chartData_Type> list = new List<chartData_Type>(_chartData);
ただし、参照型の場合は複雑になります。クラスにDeepCopyDeepCopy
メソッドを実装してから、リスト内のオブジェクトごとに実装する必要があります。
DeepClone
方法:
public static class CloneHelper
{
public static T DeepClone<T>(T obj)
{
using (var ms = new MemoryStream())
{
var formatter = new BinaryFormatter();
formatter.Serialize(ms, obj);
ms.Position = 0;
return (T) formatter.Deserialize(ms);
}
}
}
このメソッドを使用するには、クラスに次のchartData_Type
マークを付ける必要があります[Serializable]
。
[Serializable]
class chartData_Type
{}
したがって、手動でディープクローンを作成できます。
var cloneChartData = _chartData.Select(d =>
CloneHelper.DeepClone<chartData_Type>(d))
.ToList();