DataTableのコピーについて

DataTableのコピーを試みています。
DataTable AをDataTable Bにコピーするだけです。
代入アクティビティを使って B=A としました。
困ったことにAを変更するとBまで同じ変更がされます。
理解に苦しんでいます。
ご指導よろしくお願いします。

1 Like

代入アクティビティ
左辺:DataTableB
右辺:DataTableA.Copy

.Copyが重要です

1 Like

正解は @HANACCHI さんが書かれているとおりです。
データテーブルをコピーしたい場合は、dataTable.Copy とすることで、元のデータテーブルに含まれる列情報と正味のデータ(行)すべてが複製されます。
補足として、もし「列情報は残したいが、中のデータ(行)は要らない」場合には、dataTable.Clone が使えます。


変数には2種類あり、「値型」と「参照型」があります。厳密な説明ではありませんが、参照型の場合は、その変数の中に「データの実体」ではなく「データの実体がどこにあるかの情報」が格納されています。データの実体は別のところにあって、直接触れないことになってます。
DataTableは参照型で、参照型変数を @196006 さんの方法でコピーしようとすると、「データテーブルの実体」 ではなくて、「データテーブルの実体がどこにあるかの情報」だけコピーされます。
この状態だと、コピー元の変数も、コピー先の変数も、それぞれがアクセスする「データテーブルの実体」がおなじになってしまうのです。

(参考URL)

2 Likes

はなっち様
いつもご指導ありがとうございます。

.copyを調査していきます

cheez_RPA様
いつもご指導ありがとうございます。
わたくしがやっていたB=Aは「参照型」だったのですね。
やりたかったのは「値型」なのでB=A.copyとすべきでした。
理解を深めていきます。

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.