下記コードを実行すると p1,p2どちらもnameが"Joe"になってしまいます。p1.name = "Mar"p2.name = "Joe"にするにはどうしたらよいのでしょうか?==== Code ====Private Class Data name as string age as integerEnd ClassPrivate p1 as DataPrivate p2 as DataSub Main dim dat As New Data dat.name = "Mar" dat.age = 19 p1 = dat p2 = dat p2.name = "Joe"End Sub
> 下記コードを実行すると p1,p2どちらもnameが"Joe"になってしまいます。> p1.name = "Mar"> p2.name = "Joe"> にするにはどうしたらよいのでしょうか?p1とp2に別のインスタンスを代入するようにすればよいです。
> p1とp2に別のインスタンスを代入するようにすればよいです。実際にはDataクラスはたくさんのデータを保持しており、その一部を変更して新しいオブジェクトとして使いたいのです。インスタンスをコピーする方法はどうすればよいのでしょうか?
> > p1とp2に別のインスタンスを代入するようにすればよいです。> 実際にはDataクラスはたくさんのデータを保持しており、その一部を変更して新しいオブジェクトとして使いたいのです。> インスタンスをコピーする方法はどうすればよいのでしょうか?基本は一個一個代入することになります。浅いコピーでよいのであれば,Object.MemberwiseCloneでコピー出来ます。# オブジェクトのコピーというのは一般に非常にややこしい話です。
> 基本は一個一個代入することになります。> 浅いコピーでよいのであれば,Object.MemberwiseCloneでコピー出来ます。> # オブジェクトのコピーというのは一般に非常にややこしい話です。YuOさん ありがとうございます。ややこしそうなので、DataクラスにClone関数を作って1個づつ代入するようにします。