タイトル : Collectionオブジェクトのコピーについて 投稿日 : 2017/02/08(Wed) 15:07 投稿者 : OrientalMelody
お世話になっております。 Collectionオブジェクトをその時点のデータ付きで別インスタンスとしてコピーしたいと思っています。 Class1クラスとForm1フォームを作成し、Button1ボタンを貼り付けて、 以下のコードを貼り付けます。 Public Class Class1 Private mintTestNo As String Private mstrTestData As String Public Property TestNo() As Integer Get TestNo = mintTestNo End Get Set(ByVal Value As Integer) mintTestNo = Value End Set End Property Public Property TestData() As String Get TestData = mstrTestData End Get Set(ByVal Value As String) mstrTestData = Value End Set End Property End Class Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim TestCollection1 As New Collection Dim TestCollection2 As New Collection Dim TestItemA As New Class1 Dim TestItemB As New Class1 TestItemA.TestData = "AAA" TestItemA.TestNo = "1" TestCollection1.Add(TestItemA) 'TestCollection2.Add(TestItemA) '---@ TestCollection2 = TestCollection1 '---A TestItemB.TestData = "BBB" TestItemB.TestNo = "2" TestCollection2.Add(TestItemB) Dim objItem As Class1 For Each objItem In TestCollection1 Debug.WriteLine("TestCollection1 " & objItem.TestNo & " " & objItem.TestData) Next objItem For Each objItem In TestCollection2 Debug.WriteLine("TestCollection2 " & objItem.TestNo & " " & objItem.TestData) Next objItem End Sub End Class TestCollection2 = TestCollection1 '---A でその時点までのデータと構造をコピーしたつもりなのですが、 結果は、 TestCollection1 1 AAA TestCollection1 2 BBB TestCollection2 1 AAA TestCollection2 2 BBB と参照先が共有されてしまうようです。 TestCollection2 = TestCollection1 '---A をコメントアウトし、 TestCollection2.Add(TestItemA) '---@ のコメントを外すともちろん所望の結果の TestCollection1 1 AAA TestCollection2 1 AAA TestCollection2 2 BBB になります。 CollectionオブジェクトはCloneメソッドもないようですし、 データと構造を別インスタンスとしてコピーするにはどのようにしたら良いのでしょうか? もし何かお分かりの方がいらっしゃいましたら、ご教示の程、宜しくお願いいたします。 使用OS、言語:Win7 64bit、VB2005 |