これが内部メモリ/プロセッサでどのように発生するかはよくわかりません。
positionBlock
を持つという名前のクラスを作成しました。また、ブロックを保存するための があります。List<Block>
まず、そのリストにブロックを追加します。
blocks.Add(new Block());
次に、そのブロックを複製して、リスト内の位置が異なる 2 つの独立したブロックを作成します。
Block clonedBlock = blocks[0];
blocks.Add(clonedBlock);
しかし、新しく作成したブロックの位置を変更すると、最初のブロックの位置も変更されます。
なぜそれを行うのですか、それを防ぐ方法はありますか?
ところで、リストにはいくつか奇妙な動作があるように見えることに気付きました。たとえば、この場合:
List<Block> list01 = new List<Block>();
[... add some blocks to that list ...]
List<Block> list02 = list01; // also tried: List<Block> list02 = list01.ToList();
[... change item in list01 ...] --> also changes that item in list02
これにより、リストにはポインターのようなものしか含まれず、ブロックを「複製」しようとすると、ポインターのみがコピーされますが、ポインターが指している位置は同じままであると推測されました。同じ質問: それを防ぐ方法はありますか?
編集: 解決策: Object.MemberwiseClone()- メソッド