ディープコピーを実現する、静的メソッドです。
通常は参照渡しになってしまう配列やクラスでも、値渡しにすることができます。
//MyClass dest = Deep.Copy(source);みたいな感じで使う
public static class Deep
{
public static T Copy(T target)
{
T result;
BinaryFormatter b = new BinaryFormatter();
MemoryStream mem = new MemoryStream();
try
{
b.Serialize(mem, target);
mem.Position = 0;
result = (T)b.Deserialize(mem);
}
finally
{
mem.Close();
}
return result;
}
}