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

//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;
    }
}