PV0うまく説明できるか不安ですが、VB.Net2010sp1の環境でArrayListを使用していますArrayList内には構造体を格納していて、この構造体にもArrayListがありますこの状態で、ArrayListに1件構造体を追加して、次に追加した1件を複写すると、構造体内のArrayListの値が全て連動してしまい(0)=複写元に代入した値が(1)移行の複写先にも反映してしまいます。文字型(構造体内のString)は問題なく使用できるのですが。Sub何か使用方法が間違っている気がしますが、何か対策/指摘があれば教えて下さい。型の「作成時点以降に値を変更できない」というところから来ている現象だと思います。更新順0気になった点はソースコードのコメントに「ArrayListを複写して」とあるのにArrayListを複写していないことです。そこでコメントに合わせて実際に複写してみたところ、myname1-nanaさんがおそらく意図しているであろう動作になるようです。Item2も(0)だけ値が変わります。ArrayListの複写にはシャローコピーとディープコピーがありますが、これはシャローコピーのほうです。元のものとの差分を示します。AR.Add(wItem1)というわけで「VB.NetのArrayList型を複写すると、複写元/先の内容が連動してしまう」わけではないと思います。質問者さんのやり方での複写は参照の複写で、実体は複写していないので、1個の実体(StringやArrayListのインスタンス)に対して参照が複数個作られます。それらの参照はみな1個の実体を指しています。1個の実体を「共有」します。その状態で下記のように質問者さんのやり方での変更を行ないます。wItem3するとItem1のほうは別の実体("hoge2")への参照を代入したので、別の実体を指すようになります。これはAR(0)のItem1(参照)を書きかえただけで、AR(1)等のItem1(参照)はいじっておらず、AR(1)等はもとの実体("hoge")を指したままなので変化はしません。これは意図する結果ということになります。Item2のほうは、ArrayListの先頭要素に"222変更後"を代入したので、Item2(参照)が指す先の実体を更新します。Item2(参照)自体は元のままであり、AR(0)のItem2(参照)もAR(1)等のItem2(参照)も同じ1個のArrayListの実体を指しています。その結果AR(1)等も先頭要素が"222変更後"に変化して一見「連動」しているように見えますが、実際は1個の実体の「共有」なので、AR(0)だけの更新のつもりが、そうはうまくいかなかっただけで、これは予期せぬ結果ということになります。ArrayListの複写時に、実体(ArrayListの器の部分およびその中に入っている全要素)を複写し、AR(0)、AR(1)等のItem2(参照)が別々の実体を指すようにしておけば、予期せぬ結果は避けられます。実装方法ですが、例えば変更がほとんどないのであれば、実際に変更があるまでは実体を複写する必要はないかもしれませんし、また別の話として、要件によってはシャローコピーではNGでディープコピーが必要とされるかもしれませんし、その辺は要件次第でしょうか。実装するかは要件次第だと思いますが、他人のコードをいじったときに思わぬ副作用が生じるとあまり嬉しくはないので、なるべく副作用が生じないようになっているといいのかなと思います。(3)今の質問者さんのやり方で、質問者さんが意図する「複写」はできているのかもしれません。さんの書かれたように「複写」のやり方を変えるか、私のレスに書いたように「変更」のやり方を変えるか、いずれかの対応を取るということになりますが、どちらが良いかは質問者さんしだいだと思います。15:47SurferOnWwwさん、コメントありがとうございます。説明を追加してみました。12:55重箱の隅的なことを言ってすみません。別のオブジェクトを指すことになると思われます。詳細は解答欄に追記しますので、よろしければ見てください。14:25すいません。表現がまずかったので修正した後、SurferOnWwwさんのコメントに気づきました。ご指摘ありがとうございます。14:38SurferOnWwwさん、回答欄の追記の部分を読みました。ボックス化のことは考えていなかったので、とても参考になりました。ありがとうございます。15:020少し詳しく見てみましたが、先のコメントで書いたことは合っていたようです。値型と参照型の違いは理解されているでしょうか。理解してない、もしくはあやふやと言うことでしたら、ググって調べるなどして理解した上で、以下を読んでください。ArrayListの値が全て連動してしまい(0)=複写元に代入した値が(1)移行の複写先にも反映してしまいます。文字型(構造体内のString)は問題なく使用できるのですが。型の「作成時点以降に値を変更できない」というところから来ています。指したままになっているということです。方が理解しやすい動き)、ハマる人が多いようです。新たに作ってその参照(ポインタ)を代入。