ハックライフノート

技術的な話とか、覚え書き

[VB.NET]DataViewのコピーでやられた話

初めての記事がこんなニッチな内容だけど、とりあえず書き残しておく。

仕事上でVB.NETを使った業務アプリケーションの開発を行っていて、DataViewを初めて扱った時につまづきました。

 例えば、こんなソースコードを書いたとする。

Dim dv1 AS New DataView
(dv1に適当なデータを入れた後)
Dim dv2 AS DataView = dv1

これでまーdv1の内容をdv2へとコピーできたかな、と思ったら大間違い。

この状態でdv2を編集すると、dv1にも影響します。

いわゆる値渡しじゃなくて参照渡し的な動作をしてくれやがります。(どうなってるかは分からない)

なんで、もしDataViewをコピーしたい時は

dv2.Table = dv1.Table.Copy()

てな感じで、TableプロパティのCopy()メソッドを使ってやればOK。


余談
Dataうんちゃら関係って多いですよね、DataSetとかDataTableとかDataRowとか・・・

これらは仮想的なデータベースを構築してやるクラス群なんですよね。

動作は遅いらしいですけどね。