- 締切済み
(VB2005) ArrayListへの実体(値型変数)格納について
先刻も質問させてもらい、redfox63さま、KGさまに 回答いただきありがとうございました。 ArrayListに参照型データが格納されているようであることが判明しました。 ではArrayListに値型(変数の実体)を格納するにはどうすればいいでしょうか? 【前提】 ・処理の中で構造体変数XXXが更新される。 ・XXX更新の都度、Undo用ArrayListのAListにXXXを保存する関数をコールする。 Dim XXX as New AAA Dim AList as NEW ArrayList XXX <--- 処理の中で更新がかかるとともに、保存関数XXX_Updateをコールする。 Private Function XXX_Update( ) Dim XXX_Buf as AAA XXX_Buf = NEW AAA XXX_Buf = XXX …(1) AList.Insert(0,XXX_Buf) …(2) End Function このような関数ではAListにXXXへの参照データが入ってしまい、 過去に保存したはずのItemすべてが現在のXXXになってしまいます。 ということはAListに格納されているデータはすべて 現在のXXXを参照するデータになっているということですね? AListにXXXの実体(値型)を格納するにはどうすればいいでしょうか? DirectCastが値型と参照型の変換という説明を見つけたので使ってみましたが、 うまくいきませんでした。 (1)⇒ XXX_Buf = DirectCast(XXX, AAA) (2)⇒ AList.Insert(0,DirectCast(XXX_Buf,AAA)) 原因や解決法などおわかりの方いましたら、回答よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- redfox63
- ベストアンサー率71% (1325/1856)