1

Windows Phone には System.Runtime.Serialization.Formatters.Binary 名前空間がないため、次の方法を使用しています。

bool[][] newMask = (bool[][])this.mask.Clone();

しかし、これがディープコピーを作成するかどうかはわかりません(ただし、この質問はディープコピーを作成することを示唆していますが、パフォーマンスの目的でジャグ配列を使用しているという事実に疑いがあります)

4

2 に答える 2

4

それは浅いコピーを作成するだけです。ディープ コピーを作成するには、次のようなものが必要です。

bool[][] newMask = new bool[mask.Length][];
for (int i = 0; i < newMask.Length; i++)
{
    newMask[i] = (bool[]) mask[i].Clone();
}

のドキュメントからArray.Clone

Array の浅いコピーを作成します。

...

Array の浅いコピーは、参照型か値型かに関係なく、Array の要素のみをコピーしますが、参照が参照するオブジェクトはコピーしません。新しい配列内の参照は、元の配列内の参照が指すのと同じオブジェクトを指します。

于 2013-10-08T15:59:43.340 に答える