ディープコピー

ディープコピーを実現する、静的メソッドです。
通常は参照渡しになってしまう配列やクラスでも、値渡しにすることができます。

//MyClass dest = Deep.Copy<MyClass>(source);みたいな感じで使う
public static class Deep
{
        public static T Copy<T>(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;
        }
    }